novomind iSHOP GraphQL API Reference

Congratulations! You found the documentation to the novomind iSHOP GraphQL API (in short: Shop API) which provides queries and mutations to the public resources in the novomind iSHOP.

Contact

novomind iSHOP Support

ishop-support@novomind.com

API Endpoints
# Stable API, only accessible from within the novomind network:
https://novosales-hl-prod.kubfra-ishop.novomind.com/api/graphql/
# Your API endpoint!:
https://<your server>/api/graphql/
Headers
# Please check the documentation on how to get the token
Authorization: Bearer <YOUR_TOKEN_HERE>
Version

47

Overview

This API is designed for use with headless shop frontends, such as the novomind iSHOP Storefront or SHOPin by Creative Style.

For accessing the relevant version of the documentation, you can also utilize the Apollo Router Studio on your novomind iSHOP installation:

https://<your-url-here>/api/graphql/

This API includes comprehensive management of customer and order data, shopping carts and wishlists, payment and promotion processing, as well as querying product data, category data, and maintained shop parameters. These functions are delivered by various microservices, which are combined into a supergraph. The endpoint for this supergraph is an Apollo Router with gateway functionalities, allowing the creation of a single GraphQL request that utilizes these microservices. The gateway is secured by OAuth 2.0. All requests must be made with a valid JSON Web Token, which must be obtained from an Authentication Service endpoint beforehand.

The API offers extensive capabilities for managing customer and order data, handling shopping carts and wishlists, processing payments and promotions, and querying product and category data, along with other shop parameters. These functionalities are powered by various microservices, which are aggregated into a supergraph. This supergraph is accessible via an Apollo Router with gateway functionality, enabling a unified GraphQL request that interacts with all the microservices. The gateway is secured by OAuth 2.0, requiring all requests to include a valid JSON Web Token (JWT), which must be obtained in advance from an Authentication Service endpoint.

If you intend to implement backend features or extend the APIs please refer to our documentation for novomind iSHOP headless backend development. Please note that this documentation is not publicly available.

Before proceeding, please make sure to review the authentication guide.

Authentication

For being able to use the API a valid JSON Web Token (JWT) is needed. The Authentication-Service supports client_credentials, authorization_code, and refresh_token as grant types. Which grant types are available for a particular client depends on its configuration. The required JWT needs to be requested from the Authentication-Service endpoint.

Independent on the grant type the process ends with a JSON response that contains the attribute "access_token" with the JWT as value. This JWT has to be used as header parameter for requests to the gateway:

  • Header Key: "Authorization"
  • Header Value: "Bearer <fetched JWT>"

To get the right credentials for fetching JWTs please ask someone from our team.

Guest Customers

Any interaction with the shop needs at least a guest token. The grant type client_credentials with the clients credentials and a uuid from the user is used to generate the JWT. The uuid from the user is either located in a cookie or it is generated.

The relevant properties are:

  • Access Token URL: <auth-service-url>/oauth2/token
  • Client ID: <Client ID>
  • Client Secret: <matching password for the Client ID>
  • Grant Type: Client Credentials
  • Scope: shop-guest

After fetching the token it can be tested that everything works with the following query:

query Shop_findCarts {
  shop_findCarts {
    id
  }
}

Since nothing has been done with the customer yet the result should be empty like this response:

{
  "data": {
    "shop_findCarts": []
  }
}

Registering a Customer

The login page on the Authorization-Service contains a register form as well. At least one request of the user on the Authorization-Service must be done with the mcs as a parameter. (e.g. /login/?mcs=%5Bbrand%3Dnovosales%20channel%3Dweb%20country%3Dde%20currency%3DEUR%20language%3Dde%20store%3D%5D) The value is stored in the session and will be used later in the registration process.

<auth-service-url>/login/?mcs=<existing MCS string>

Registered Customers

For registered users the grant type authorization_code is used. The client creates a redirect to the Authorization-Service Auth URL that contains a Callback URL (parameter redirect_uri), the clientId, scope=shop-customer, response_type=code and the mcs. Besides that the target of the user will be remembered by the client. It is possible to use the state parameter to carrier over data, like the target, from the Auth URL to the Callback URL.

The user follows the redirect to the Auth URL:

  • If the user is not logged in to the Authorization-Service, the login page will be shown. With username and password the user can login and the Auth URL will be called again.

  • If the user is logged in and the Auth URL is called a redirect to the Callback URL that contains a code parameter is returned. The user calls the Callback URL on the client. Afterwards the client uses the Access Token URL with parameters code, which is from the Callback URL, the same redirect_uri as used with the Auth URL and grant_type=authorize_code.

The response is a JSON that contains the access_token and if the client has the right the refresh_token as well. In the default configuration of clients the permissions are implicit, so no additional window will pop up in the authorization process.

The required properties are:

  • Auth URL: <auth-service-url>/oauth2/authorize?mcs=<existing MCS string>
  • Access Token URL: <auth-service-url>/oauth2/token
  • Callback URL: <matching URL with the clients configuration from the Authentication-Service>
  • Client ID: <Client ID>
  • Client Secret: <matching password for the Client ID>
  • Grant Type: Authorization Code
  • Scope: shop-customer

After fetching the token it can be tested that everything works with the following query:

query Account_loadCustomer {
  account_loadCustomer {
    firstname
    lastname
  }
}

Assuming for the registration was used John as firstname and Doe as lastname the response should like:

{
  "data": {
    "account_loadCustomer": {
      "firstname": "John",
      "lastname": "Doe"
    }
  }
}

If this query is used with a JWT for a guest customer it would result in an error with message Forbidden.

For clients with the right to use "refresh_token" a new pair of tokens can be created using the Access Token URL with the following parameters only:

  • grant_type=refresh_token
  • refresh_token=<refresh_token>

Refresh tokens can be reusable or not, depending on the clients configuration. Reusable refresh tokens can be used infinitely in their time-to-live to get new access tokens. Non-reusable refresh tokens can be used once in their time-to-live to generate a new token pair. The new refresh token then has its own time-to-live, which allows to stay logged in forever if refreshed often enough.

Carts and Wishlists

The Shop API differentiates between carts and wishlists for all customers.

The Cart contains:

  • Positions
  • Billing address
  • Shipping address
  • Selected payment method
  • Selected shipping method
  • Other properties

For B2C purposes there is only one cart per user. If there is no cart, then one will be created on demand. The most important mutation operation is cart_update. It allows to modify positions, set addresses, payment methods, etc.

The Wishlist contains:

  • Positions

Customers can have multiple wishlists that they can organize themselves.

Cart To Wishlist

With the cart_addAllToWishlist mutation it is possible to move all positions from a cart to the wishlist of a customer. The cart is empty afterwards. If the wishlist already contains positions with the same item id, they will be merged into one position.

Wishlist To Cart

With the wishlist_addAllToCartmutation all positions from the wishlist are moved to the cart of the customer. Positions that have no quantity on the wishlist will be moved with quantity set to 1. If the cart already contains positions with the same item id, they will be merged into one position.

Checkout

The checkout process is done via shop_submitOrder mutation. This page describes the minimum requirements to place an order successfully.

Minimum Requirements

Orders can be submitted for both types of customers if the following minimum requirements are met.

For registered users the guestId may not be set, as it would turn it into a guest order.

Mutation query:

mutation Mutation($data: UpdateCartInput!) {
    cart_update(data: $data) {
        ... on UpdateCartSuccess {
            cart {
                id
            }
        }
    }
}

Variables for the mutation (just for showcasing):

{
  "data": {
    "ops": [
      {
        "setBillingAddress": {
          "value": {
            "salutation": "MR",
            "firstname": "John",
            "lastname": "Doe",
            "street": "Any Street",
            "number": "1",
            "city": "Any City",
            "postcode": "12345",
            "country": "Any Country"
          }
        },
        "setGuestId": {
          "value": "<user identifier e.g. e-mail>"
        },
        "setPaymentMethod": {
          "value": {
            "interfaceId": "<valid interface id>",
            "methodCode": "<valid method code>"
          }
        },
        "setShippingMethod": {
          "value": {
            "shipperId": "<valid shipper id>"
          }
        },
        "positionOp": {
          "addPosition": {
            "setItemId": {
              "value": "<valid item id>"
            },
            "updateQuantity": {
              "quantity": 1
            }
          }
        }
      }
    ]
  }
}

Afterwards the mutation shop_submitOrder can be used to submit the order with the given cartId.

Supporting Operations

To get a list of the available shipping methods the following query can be used:

query Query {
  shop_findCarts {
    availableShippingMethods {
      amount {
        amount
        currencyCode
        currencySymbol
        intAmount
        precision
        stringValue
      }
      description
      freeShipping
      name
      shipperId
    }
  }
}

To get a list of the available payment methods the following query can be used:

query Cart_availablePayments($cartId: ID!) {
  cart_availablePayments(cartId: $cartId) {
    interfaceId
    methodCodes
  }
}
# with variable:
{
  "cartId": "<cart id that will be submitted>"
}

Mutation paypal_createOrder

If an order with payment method PayPal gets submitted the mutation paypal_createOrder with the orderId that is returned by shop_submitOrder is needed to start the PayPal payment process. Afterwards an approval link is returned where the payment gets handled. The customer logs into PayPal, selects the payment options and then returns to the app context, by the browser following the redirect from PayPal, to the PayPal approve URL. It will automatically try to capture the payment and then change the order to completed. (ERP system is responsible for this task to handle in the background) The server redirects to the frontend PayPal success url.

Queries

account_loadCustomer

Description

Fetch all data of the current customer

Response

Returns a Customer

Example

Query
query Account_loadCustomer {
  account_loadCustomer {
    addressBook {
      billingAddress {
        ...BillingAddressFragment
      }
      defaultShippingAddress {
        ...ShippingAddressFragment
      }
      shippingAddresses {
        ...ShippingAddressFragment
      }
    }
    birthDate
    company
    customerIdentifier
    firstname
    lastname
    orders {
      orderList {
        ...OrderFragment
      }
      total
    }
    phoneNumbers {
      number
      type
    }
    salutation
    title
    username
  }
}
Response
{
  "data": {
    "account_loadCustomer": {
      "addressBook": AddressBook,
      "birthDate": "2007-12-03",
      "company": "abc123",
      "customerIdentifier": "abc123",
      "firstname": "abc123",
      "lastname": "xyz789",
      "orders": OrderListResult,
      "phoneNumbers": [Phone],
      "salutation": "xyz789",
      "title": "xyz789",
      "username": "xyz789"
    }
  }
}

cart_availablePayments

Description

Fetch all allowed payments for a specific cart, including fraud detection (if implemented)
These payments should be used in the checkout process.

Response

Returns [Payment]!

Arguments
Name Description
cartId - ID! The cart ID to fetch payments for

Example

Query
query Cart_availablePayments($cartId: ID!) {
  cart_availablePayments(cartId: $cartId) {
    interfaceId
    methodCodes
  }
}
Variables
{"cartId": "4"}
Response
{
  "data": {
    "cart_availablePayments": [
      {
        "interfaceId": "4",
        "methodCodes": ["abc123"]
      }
    ]
  }
}

core_brand

Description

Fetch a product brand by its ID

Response

Returns a Brand

Arguments
Name Description
id - ID! ID of brand to fetch

Example

Query
query Core_brand($id: ID!) {
  core_brand(id: $id) {
    id
    image {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    name
    parameters {
      name
    }
    productCount
    products {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    topsellers {
      products {
        ...ProductFragment
      }
      totalCount
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "core_brand": {
      "id": 4,
      "image": Image,
      "link": Link,
      "name": "abc123",
      "parameters": [ContentAttribute],
      "productCount": 123,
      "products": [Product],
      "topsellers": ProductRecommendations
    }
  }
}

core_brandRecommendations

Description

Top selling brands for a given category
By default, the top sellers are disabled and need to be enabled in the backend (see ShopApiConfigurer#recommendationsWhitelist and RecommendationType#BRAND).

Response

Returns a BrandRecommendations!

Arguments
Name Description
categoryId - String! Category ID to find for top sellers
paging - RecommendationPaging! Paging to list recommended brands. Default = {limit: 100, offset: 0}

Example

Query
query Core_brandRecommendations(
  $categoryId: String!,
  $paging: RecommendationPaging!
) {
  core_brandRecommendations(
    categoryId: $categoryId,
    paging: $paging
  ) {
    brands {
      id
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      name
      parameters {
        ...ContentAttributeFragment
      }
      productCount
      products {
        ...ProductFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    totalCount
  }
}
Variables
{
  "categoryId": "xyz789",
  "paging": {"limit": 100, "offset": 0}
}
Response
{
  "data": {
    "core_brandRecommendations": {
      "brands": [Brand],
      "totalCount": 123
    }
  }
}

core_brandTopsellerRecommendations

Description

Top selling products of a brand
By default, the top sellers are disabled and need to be enabled in the backend (see ShopApiConfigurer#recommendationsWhitelist and RecommendationType#BRAND_TOPSELLER).

Response

Returns a ProductRecommendations!

Arguments
Name Description
brandId - String! Brand ID to find for top sellers
includingReducedProducts - Boolean! If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed. Default = true
paging - RecommendationPaging! Paging to list recommended products. Default = {limit: 100, offset: 0}

Example

Query
query Core_brandTopsellerRecommendations(
  $brandId: String!,
  $includingReducedProducts: Boolean!,
  $paging: RecommendationPaging!
) {
  core_brandTopsellerRecommendations(
    brandId: $brandId,
    includingReducedProducts: $includingReducedProducts,
    paging: $paging
  ) {
    products {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    totalCount
  }
}
Variables
{
  "brandId": "xyz789",
  "includingReducedProducts": true,
  "paging": {"limit": 100, "offset": 0}
}
Response
{
  "data": {
    "core_brandTopsellerRecommendations": {
      "products": [Product],
      "totalCount": 123
    }
  }
}

core_category

Description

Fetch a product category by its ID

Response

Returns a Category

Arguments
Name Description
id - ID! ID of category to fetch

Example

Query
query Core_category($id: ID!) {
  core_category(id: $id) {
    ancestors {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    bottomTeaserInsertion {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    children {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    id
    idsDown
    isHiddenFor
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    metaTagDescription
    metaTagRobots
    metaTagTitle
    name
    navigationFlyout {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    parameters {
      name
    }
    parent {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    products {
      ... on PageSearchResult {
        ...PageSearchResultFragment
      }
      ... on ProductSearchResult {
        ...ProductSearchResultFragment
      }
      ... on RedirectSearchResult {
        ...RedirectSearchResultFragment
      }
    }
    raster {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    recommendations {
      categories {
        ...CategoryFragment
      }
      totalCount
    }
    redirect {
      linkId
      linkType
      responseCode
      url
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    seoBoxText
    seoHeadline
    seoThumbnail {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    teaserInsertions {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    topTeaserInsertion {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    topsellers {
      products {
        ...ProductFragment
      }
      totalCount
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "core_category": {
      "ancestors": [Category],
      "bottomTeaserInsertion": TeaserAttribute,
      "children": [Category],
      "id": "4",
      "idsDown": "abc123",
      "isHiddenFor": true,
      "link": Link,
      "metaTagDescription": "xyz789",
      "metaTagRobots": "xyz789",
      "metaTagTitle": "abc123",
      "name": "xyz789",
      "navigationFlyout": Image,
      "parameters": [ContentAttribute],
      "parent": Category,
      "products": PageSearchResult,
      "raster": Raster,
      "recommendations": CategoryRecommendations,
      "redirect": ResolvedLink,
      "seo": Seo,
      "seoBoxText": "abc123",
      "seoHeadline": "abc123",
      "seoThumbnail": Image,
      "teaserInsertions": [TeaserAttribute],
      "topTeaserInsertion": TeaserAttribute,
      "topsellers": ProductRecommendations
    }
  }
}

core_categoryRecommendations

Description

Similar/recommended categories to a given category

Response

Returns a CategoryRecommendations!

Arguments
Name Description
categoryId - String! Category ID to find for recommendations
paging - RecommendationPaging! Paging to list recommended categories. Default = {limit: 100, offset: 0}

Example

Query
query Core_categoryRecommendations(
  $categoryId: String!,
  $paging: RecommendationPaging!
) {
  core_categoryRecommendations(
    categoryId: $categoryId,
    paging: $paging
  ) {
    categories {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    totalCount
  }
}
Variables
{
  "categoryId": "abc123",
  "paging": {"limit": 100, "offset": 0}
}
Response
{
  "data": {
    "core_categoryRecommendations": {
      "categories": [Category],
      "totalCount": 987
    }
  }
}

core_globalParameters

Description

Filters by global parameters
Such a parameter can be, for example, the maximal numbers of products on category or search result page. There can be different types of parameters, from simple text to a complex teaser. By default, the category parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#globalParameterWhitelist).

Response

Returns [GlobalParameter]!

Arguments
Name Description
filters - [GlobalParameterFilter!]! Filters to select global parameters (by parameter type and parameter name) Default: no parameters are selected and an empty list is returned. Default = []

Example

Query
query Core_globalParameters($filters: [GlobalParameterFilter!]!) {
  core_globalParameters(filters: $filters) {
    parameters {
      name
    }
    type
  }
}
Variables
{"filters": [""]}
Response
{
  "data": {
    "core_globalParameters": [
      {
        "parameters": [ContentAttribute],
        "type": "xyz789"
      }
    ]
  }
}

core_item

Description

Fetch an item by its ID

Response

Returns an Item

Arguments
Name Description
id - ID! ID of item to fetch

Example

Query
query Core_item($id: ID!) {
  core_item(id: $id) {
    id
    inBasket
    onWishlist
    additionalImages {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    assets {
      ... on Document {
        ...DocumentFragment
      }
      ... on Image {
        ...ImageFragment
      }
      ... on Video {
        ...VideoFragment
      }
    }
    availability {
      availabilityText
      available
      maxQuantity
      minQuantity
    }
    badges {
      name
      type
    }
    color {
      displayName
      searchColor {
        ...SearchColorFragment
      }
    }
    documents {
      displayName
      fileName
      url
    }
    features {
      displayName
      displayValue
      name
    }
    image {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    images {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    itemDiscount {
      discountAmount {
        ...MoneyFragment
      }
      discountPercent
      promotionsSavings {
        ...MoneyFragment
      }
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    oldPrice {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    price {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    product {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    recommendations {
      items {
        ...ItemFragment
      }
      totalCount
    }
    relations {
      displayName
      relations {
        ...ProductRelationFragment
      }
      totalCount
    }
    rrpPrice {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    services {
      html
      id
      value
    }
    shortDescription
    size
    sku
    variations {
      displayName
      displayValue
      name
    }
    videos {
      fileName
      url
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "core_item": {
      "id": "4",
      "inBasket": false,
      "onWishlist": false,
      "additionalImages": [Image],
      "assets": [Document],
      "availability": Availability,
      "badges": [Badge],
      "color": ItemColor,
      "documents": [Document],
      "features": [ItemAttribute],
      "image": Image,
      "images": [Image],
      "itemDiscount": ItemDiscount,
      "link": Link,
      "oldPrice": Money,
      "price": Money,
      "product": Product,
      "recommendations": ItemRecommendations,
      "relations": [ProductRelations],
      "rrpPrice": Money,
      "seo": Seo,
      "services": [ProductService],
      "shortDescription": "abc123",
      "size": "xyz789",
      "sku": "xyz789",
      "variations": [ItemAttribute],
      "videos": [Video]
    }
  }
}

core_itemRecommendations

Description

Content based item recommendations for a given item

Response

Returns an ItemRecommendations!

Arguments
Name Description
itemId - String! Item ID to find for recommendations
paging - RecommendationPaging! Paging to list recommended items. Default = {limit: 100, offset: 0}

Example

Query
query Core_itemRecommendations(
  $itemId: String!,
  $paging: RecommendationPaging!
) {
  core_itemRecommendations(
    itemId: $itemId,
    paging: $paging
  ) {
    items {
      id
      inBasket
      onWishlist
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      availability {
        ...AvailabilityFragment
      }
      badges {
        ...BadgeFragment
      }
      color {
        ...ItemColorFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ItemAttributeFragment
      }
      image {
        ...ImageFragment
      }
      images {
        ...ImageFragment
      }
      itemDiscount {
        ...ItemDiscountFragment
      }
      link {
        ...LinkFragment
      }
      oldPrice {
        ...MoneyFragment
      }
      price {
        ...MoneyFragment
      }
      product {
        ...ProductFragment
      }
      recommendations {
        ...ItemRecommendationsFragment
      }
      relations {
        ...ProductRelationsFragment
      }
      rrpPrice {
        ...MoneyFragment
      }
      seo {
        ...SeoFragment
      }
      services {
        ...ProductServiceFragment
      }
      shortDescription
      size
      sku
      variations {
        ...ItemAttributeFragment
      }
      videos {
        ...VideoFragment
      }
    }
    totalCount
  }
}
Variables
{
  "itemId": "xyz789",
  "paging": {"limit": 100, "offset": 0}
}
Response
{
  "data": {
    "core_itemRecommendations": {
      "items": [Item],
      "totalCount": 123
    }
  }
}

core_items

Description

Fetch a list of items by their IDs

Response

Returns [Item]!

Arguments
Name Description
ids - [ID!]! IDs of items to fetch

Example

Query
query Core_items($ids: [ID!]!) {
  core_items(ids: $ids) {
    id
    inBasket
    onWishlist
    additionalImages {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    assets {
      ... on Document {
        ...DocumentFragment
      }
      ... on Image {
        ...ImageFragment
      }
      ... on Video {
        ...VideoFragment
      }
    }
    availability {
      availabilityText
      available
      maxQuantity
      minQuantity
    }
    badges {
      name
      type
    }
    color {
      displayName
      searchColor {
        ...SearchColorFragment
      }
    }
    documents {
      displayName
      fileName
      url
    }
    features {
      displayName
      displayValue
      name
    }
    image {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    images {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    itemDiscount {
      discountAmount {
        ...MoneyFragment
      }
      discountPercent
      promotionsSavings {
        ...MoneyFragment
      }
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    oldPrice {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    price {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    product {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    recommendations {
      items {
        ...ItemFragment
      }
      totalCount
    }
    relations {
      displayName
      relations {
        ...ProductRelationFragment
      }
      totalCount
    }
    rrpPrice {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    services {
      html
      id
      value
    }
    shortDescription
    size
    sku
    variations {
      displayName
      displayValue
      name
    }
    videos {
      fileName
      url
    }
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "core_items": [
      {
        "id": 4,
        "inBasket": true,
        "onWishlist": true,
        "additionalImages": [Image],
        "assets": [Document],
        "availability": Availability,
        "badges": [Badge],
        "color": ItemColor,
        "documents": [Document],
        "features": [ItemAttribute],
        "image": Image,
        "images": [Image],
        "itemDiscount": ItemDiscount,
        "link": Link,
        "oldPrice": Money,
        "price": Money,
        "product": Product,
        "recommendations": ItemRecommendations,
        "relations": [ProductRelations],
        "rrpPrice": Money,
        "seo": Seo,
        "services": [ProductService],
        "shortDescription": "xyz789",
        "size": "xyz789",
        "sku": "abc123",
        "variations": [ItemAttribute],
        "videos": [Video]
      }
    ]
  }
}

core_landingPages

Description

Returns all valid landing pages

Response

Returns [LandingPage]!

Example

Query
query Core_landingPages {
  core_landingPages {
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    metaTagDescription
    metaTagRobots
    metaTagTitle
    name
    parameters {
      name
    }
    raster {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    seoBoxText
    seoThumbnail {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
  }
}
Response
{
  "data": {
    "core_landingPages": [
      {
        "link": Link,
        "metaTagDescription": "xyz789",
        "metaTagRobots": "xyz789",
        "metaTagTitle": "abc123",
        "name": "xyz789",
        "parameters": [ContentAttribute],
        "raster": Raster,
        "seo": Seo,
        "seoBoxText": "xyz789",
        "seoThumbnail": Image
      }
    ]
  }
}

core_lastSearchRecommendations

Description

Product recommendations based on last searches of the current user

Response

Returns a ProductRecommendations!

Arguments
Name Description
includingReducedProducts - Boolean! If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed. Default = true
paging - RecommendationPaging! Paging to list recommended products. Default = {limit: 100, offset: 0}

Example

Query
query Core_lastSearchRecommendations(
  $includingReducedProducts: Boolean!,
  $paging: RecommendationPaging!
) {
  core_lastSearchRecommendations(
    includingReducedProducts: $includingReducedProducts,
    paging: $paging
  ) {
    products {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    totalCount
  }
}
Variables
{"includingReducedProducts": true, "paging": {"limit": 100, "offset": 0}}
Response
{
  "data": {
    "core_lastSearchRecommendations": {
      "products": [Product],
      "totalCount": 123
    }
  }
}

core_mainCategories

Description

Filters by the top-level product categories

Response

Returns [Category]!

Arguments
Name Description
order - SortOrder! The categories are sorted as defined in the back office, this sorting can be reversed here
Default: ascending (sorted as defined in the back office). Default = ASC

Example

Query
query Core_mainCategories($order: SortOrder!) {
  core_mainCategories(order: $order) {
    ancestors {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    bottomTeaserInsertion {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    children {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    id
    idsDown
    isHiddenFor
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    metaTagDescription
    metaTagRobots
    metaTagTitle
    name
    navigationFlyout {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    parameters {
      name
    }
    parent {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    products {
      ... on PageSearchResult {
        ...PageSearchResultFragment
      }
      ... on ProductSearchResult {
        ...ProductSearchResultFragment
      }
      ... on RedirectSearchResult {
        ...RedirectSearchResultFragment
      }
    }
    raster {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    recommendations {
      categories {
        ...CategoryFragment
      }
      totalCount
    }
    redirect {
      linkId
      linkType
      responseCode
      url
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    seoBoxText
    seoHeadline
    seoThumbnail {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    teaserInsertions {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    topTeaserInsertion {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
    topsellers {
      products {
        ...ProductFragment
      }
      totalCount
    }
  }
}
Variables
{"order": "ASC"}
Response
{
  "data": {
    "core_mainCategories": [
      {
        "ancestors": [Category],
        "bottomTeaserInsertion": TeaserAttribute,
        "children": [Category],
        "id": "4",
        "idsDown": "xyz789",
        "isHiddenFor": true,
        "link": Link,
        "metaTagDescription": "xyz789",
        "metaTagRobots": "abc123",
        "metaTagTitle": "xyz789",
        "name": "xyz789",
        "navigationFlyout": Image,
        "parameters": [ContentAttribute],
        "parent": Category,
        "products": PageSearchResult,
        "raster": Raster,
        "recommendations": CategoryRecommendations,
        "redirect": ResolvedLink,
        "seo": Seo,
        "seoBoxText": "abc123",
        "seoHeadline": "xyz789",
        "seoThumbnail": Image,
        "teaserInsertions": [TeaserAttribute],
        "topTeaserInsertion": TeaserAttribute,
        "topsellers": ProductRecommendations
      }
    ]
  }
}

core_mainContentTreePages

Description

Filters by top-level content tree pages

Response

Returns [ContentTreePage]!

Arguments
Name Description
order - SortOrder! The content tree pages are sorted as defined in the back office, this sorting can be reversed here
Default: ascending (sorted as defined in the back office). Default = ASC

Example

Query
query Core_mainContentTreePages($order: SortOrder!) {
  core_mainContentTreePages(order: $order) {
    ancestors {
      ancestors {
        ...ContentTreePageFragment
      }
      children {
        ...ContentTreePageFragment
      }
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...ContentTreePageFragment
      }
      raster {
        ...RasterFragment
      }
      root {
        ...ContentTreePageFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    children {
      ancestors {
        ...ContentTreePageFragment
      }
      children {
        ...ContentTreePageFragment
      }
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...ContentTreePageFragment
      }
      raster {
        ...RasterFragment
      }
      root {
        ...ContentTreePageFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    metaTagDescription
    metaTagRobots
    metaTagTitle
    name
    parameters {
      name
    }
    parent {
      ancestors {
        ...ContentTreePageFragment
      }
      children {
        ...ContentTreePageFragment
      }
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...ContentTreePageFragment
      }
      raster {
        ...RasterFragment
      }
      root {
        ...ContentTreePageFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    raster {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    root {
      ancestors {
        ...ContentTreePageFragment
      }
      children {
        ...ContentTreePageFragment
      }
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...ContentTreePageFragment
      }
      raster {
        ...RasterFragment
      }
      root {
        ...ContentTreePageFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    seoBoxText
    seoThumbnail {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
  }
}
Variables
{"order": "ASC"}
Response
{
  "data": {
    "core_mainContentTreePages": [
      {
        "ancestors": [ContentTreePage],
        "children": [ContentTreePage],
        "link": Link,
        "metaTagDescription": "abc123",
        "metaTagRobots": "abc123",
        "metaTagTitle": "abc123",
        "name": "xyz789",
        "parameters": [ContentAttribute],
        "parent": ContentTreePage,
        "raster": Raster,
        "root": ContentTreePage,
        "seo": Seo,
        "seoBoxText": "abc123",
        "seoThumbnail": Image
      }
    ]
  }
}

core_pageByUrl

Description

Returns for the given URL
To resolve an URL a shop has implement LinkIdResolver for each LinkType. Such a LinkIdResolver is already available for content tree and landing pages. May be null if no valid page can be found. If possible, use core_pageByLink to avoid having to resolve the URL in the backend.

Response

Returns a Page

Arguments
Name Description
url - String! The URL to resolve

Example

Query
query Core_pageByUrl($url: String!) {
  core_pageByUrl(url: $url) {
    metaTagDescription
    metaTagRobots
    metaTagTitle
    parameters {
      name
    }
    raster {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    seoBoxText
    seoThumbnail {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
  }
}
Variables
{"url": "abc123"}
Response
{
  "data": {
    "core_pageByUrl": {
      "metaTagDescription": "abc123",
      "metaTagRobots": "abc123",
      "metaTagTitle": "abc123",
      "parameters": [ContentAttribute],
      "raster": Raster,
      "seo": Seo,
      "seoBoxText": "abc123",
      "seoThumbnail": Image
    }
  }
}

core_product

Description

Fetch a product by its ID

Response

Returns a Product

Arguments
Name Description
id - ID! ID of product to fetch

Example

Query
query Core_product($id: ID!) {
  core_product(id: $id) {
    id
    additionalImages {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    assets {
      ... on Document {
        ...DocumentFragment
      }
      ... on Image {
        ...ImageFragment
      }
      ... on Video {
        ...VideoFragment
      }
    }
    bestVariation {
      id
      inBasket
      onWishlist
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      availability {
        ...AvailabilityFragment
      }
      badges {
        ...BadgeFragment
      }
      color {
        ...ItemColorFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ItemAttributeFragment
      }
      image {
        ...ImageFragment
      }
      images {
        ...ImageFragment
      }
      itemDiscount {
        ...ItemDiscountFragment
      }
      link {
        ...LinkFragment
      }
      oldPrice {
        ...MoneyFragment
      }
      price {
        ...MoneyFragment
      }
      product {
        ...ProductFragment
      }
      recommendations {
        ...ItemRecommendationsFragment
      }
      relations {
        ...ProductRelationsFragment
      }
      rrpPrice {
        ...MoneyFragment
      }
      seo {
        ...SeoFragment
      }
      services {
        ...ProductServiceFragment
      }
      shortDescription
      size
      sku
      variations {
        ...ItemAttributeFragment
      }
      videos {
        ...VideoFragment
      }
    }
    brand {
      id
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      name
      parameters {
        ...ContentAttributeFragment
      }
      productCount
      products {
        ...ProductFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    breadcrumb {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    categories {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    category {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    documents {
      displayName
      fileName
      url
    }
    features {
      sequenceNo
    }
    globalContent {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    image {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    longDescription
    materials
    name
    page {
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      parameters {
        ...ContentAttributeFragment
      }
      raster {
        ...RasterFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    recommendations {
      products {
        ...ProductFragment
      }
      totalCount
    }
    reviews {
      average
      bestRating
      count
      reviews {
        ...ReviewFragment
      }
      worstRating
    }
    sellingPoints
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    shortDescription
    variations {
      id
      inBasket
      onWishlist
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      availability {
        ...AvailabilityFragment
      }
      badges {
        ...BadgeFragment
      }
      color {
        ...ItemColorFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ItemAttributeFragment
      }
      image {
        ...ImageFragment
      }
      images {
        ...ImageFragment
      }
      itemDiscount {
        ...ItemDiscountFragment
      }
      link {
        ...LinkFragment
      }
      oldPrice {
        ...MoneyFragment
      }
      price {
        ...MoneyFragment
      }
      product {
        ...ProductFragment
      }
      recommendations {
        ...ItemRecommendationsFragment
      }
      relations {
        ...ProductRelationsFragment
      }
      rrpPrice {
        ...MoneyFragment
      }
      seo {
        ...SeoFragment
      }
      services {
        ...ProductServiceFragment
      }
      shortDescription
      size
      sku
      variations {
        ...ItemAttributeFragment
      }
      videos {
        ...VideoFragment
      }
    }
    vat
    videos {
      fileName
      url
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "core_product": {
      "id": 4,
      "additionalImages": [Image],
      "assets": [Document],
      "bestVariation": Item,
      "brand": Brand,
      "breadcrumb": [Category],
      "categories": [Category],
      "category": Category,
      "documents": [Document],
      "features": [ProductFeature],
      "globalContent": Raster,
      "image": Image,
      "link": Link,
      "longDescription": "xyz789",
      "materials": ["xyz789"],
      "name": "xyz789",
      "page": MaintainedProductPage,
      "recommendations": ProductRecommendations,
      "reviews": Reviews,
      "sellingPoints": ["xyz789"],
      "seo": Seo,
      "shortDescription": "xyz789",
      "variations": [Item],
      "vat": "abc123",
      "videos": [Video]
    }
  }
}

core_productRecommendations

Description

Product recommendations for one or more given products

Response

Returns a ProductRecommendations!

Arguments
Name Description
includingReducedProducts - Boolean! If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed. Default = true
paging - RecommendationPaging! Paging to list recommended products. Default = {limit: 100, offset: 0}
productIds - [String!]! Product IDs to find for recommendations
strategy - ProductRecommendationStrategy! Recommendation strategy to use. Default = PRODUCT

Example

Query
query Core_productRecommendations(
  $includingReducedProducts: Boolean!,
  $paging: RecommendationPaging!,
  $productIds: [String!]!,
  $strategy: ProductRecommendationStrategy!
) {
  core_productRecommendations(
    includingReducedProducts: $includingReducedProducts,
    paging: $paging,
    productIds: $productIds,
    strategy: $strategy
  ) {
    products {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    totalCount
  }
}
Variables
{
  "includingReducedProducts": true,
  "paging": {"limit": 100, "offset": 0},
  "productIds": ["xyz789"],
  "strategy": "PRODUCT"
}
Response
{
  "data": {
    "core_productRecommendations": {
      "products": [Product],
      "totalCount": 123
    }
  }
}

core_products

Description

Fetch a list of products by their IDs

Response

Returns [Product]!

Arguments
Name Description
ids - [ID!]! IDs of products to fetch

Example

Query
query Core_products($ids: [ID!]!) {
  core_products(ids: $ids) {
    id
    additionalImages {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    assets {
      ... on Document {
        ...DocumentFragment
      }
      ... on Image {
        ...ImageFragment
      }
      ... on Video {
        ...VideoFragment
      }
    }
    bestVariation {
      id
      inBasket
      onWishlist
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      availability {
        ...AvailabilityFragment
      }
      badges {
        ...BadgeFragment
      }
      color {
        ...ItemColorFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ItemAttributeFragment
      }
      image {
        ...ImageFragment
      }
      images {
        ...ImageFragment
      }
      itemDiscount {
        ...ItemDiscountFragment
      }
      link {
        ...LinkFragment
      }
      oldPrice {
        ...MoneyFragment
      }
      price {
        ...MoneyFragment
      }
      product {
        ...ProductFragment
      }
      recommendations {
        ...ItemRecommendationsFragment
      }
      relations {
        ...ProductRelationsFragment
      }
      rrpPrice {
        ...MoneyFragment
      }
      seo {
        ...SeoFragment
      }
      services {
        ...ProductServiceFragment
      }
      shortDescription
      size
      sku
      variations {
        ...ItemAttributeFragment
      }
      videos {
        ...VideoFragment
      }
    }
    brand {
      id
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      name
      parameters {
        ...ContentAttributeFragment
      }
      productCount
      products {
        ...ProductFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    breadcrumb {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    categories {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    category {
      ancestors {
        ...CategoryFragment
      }
      bottomTeaserInsertion {
        ...TeaserAttributeFragment
      }
      children {
        ...CategoryFragment
      }
      id
      idsDown
      isHiddenFor
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      name
      navigationFlyout {
        ...ImageFragment
      }
      parameters {
        ...ContentAttributeFragment
      }
      parent {
        ...CategoryFragment
      }
      products {
        ... on PageSearchResult {
          ...PageSearchResultFragment
        }
        ... on ProductSearchResult {
          ...ProductSearchResultFragment
        }
        ... on RedirectSearchResult {
          ...RedirectSearchResultFragment
        }
      }
      raster {
        ...RasterFragment
      }
      recommendations {
        ...CategoryRecommendationsFragment
      }
      redirect {
        ...ResolvedLinkFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoHeadline
      seoThumbnail {
        ...ImageFragment
      }
      teaserInsertions {
        ...TeaserAttributeFragment
      }
      topTeaserInsertion {
        ...TeaserAttributeFragment
      }
      topsellers {
        ...ProductRecommendationsFragment
      }
    }
    documents {
      displayName
      fileName
      url
    }
    features {
      sequenceNo
    }
    globalContent {
      elements {
        ...RasterElementFragment
      }
      totalHeight
      totalWidth
    }
    image {
      alt
      boUrl
      fileName
      height
      imageRole
      name
      rank
      title
      url
      width
    }
    link {
      internalLink {
        ... on ArticleLink {
          ...ArticleLinkFragment
        }
        ... on AssetLink {
          ...AssetLinkFragment
        }
        ... on BrandLink {
          ...BrandLinkFragment
        }
        ... on CategoryPageLink {
          ...CategoryPageLinkFragment
        }
        ... on ContentTreeLink {
          ...ContentTreeLinkFragment
        }
        ... on ExternalLink {
          ...ExternalLinkFragment
        }
        ... on LandingPageLink {
          ...LandingPageLinkFragment
        }
        ... on LayerLink {
          ...LayerLinkFragment
        }
        ... on PageLink {
          ...PageLinkFragment
        }
        ... on SEOTermLink {
          ...SEOTermLinkFragment
        }
        ... on SearchTermGroupLink {
          ...SearchTermGroupLinkFragment
        }
        ... on SearchTermLink {
          ...SearchTermLinkFragment
        }
      }
      linkId
      linkType
      name
      openLinkInNewWindow
      parameters {
        ...LinkParameterFragment
      }
      title
      url
    }
    longDescription
    materials
    name
    page {
      link {
        ...LinkFragment
      }
      metaTagDescription
      metaTagRobots
      metaTagTitle
      parameters {
        ...ContentAttributeFragment
      }
      raster {
        ...RasterFragment
      }
      seo {
        ...SeoFragment
      }
      seoBoxText
      seoThumbnail {
        ...ImageFragment
      }
    }
    recommendations {
      products {
        ...ProductFragment
      }
      totalCount
    }
    reviews {
      average
      bestRating
      count
      reviews {
        ...ReviewFragment
      }
      worstRating
    }
    sellingPoints
    seo {
      canonicalUrl
      headline
      hreflang {
        ...HreflangFragment
      }
      metaTags {
        ...MetaTagFragment
      }
      seoBoxText
      title
    }
    shortDescription
    variations {
      id
      inBasket
      onWishlist
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      availability {
        ...AvailabilityFragment
      }
      badges {
        ...BadgeFragment
      }
      color {
        ...ItemColorFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ItemAttributeFragment
      }
      image {
        ...ImageFragment
      }
      images {
        ...ImageFragment
      }
      itemDiscount {
        ...ItemDiscountFragment
      }
      link {
        ...LinkFragment
      }
      oldPrice {
        ...MoneyFragment
      }
      price {
        ...MoneyFragment
      }
      product {
        ...ProductFragment
      }
      recommendations {
        ...ItemRecommendationsFragment
      }
      relations {
        ...ProductRelationsFragment
      }
      rrpPrice {
        ...MoneyFragment
      }
      seo {
        ...SeoFragment
      }
      services {
        ...ProductServiceFragment
      }
      shortDescription
      size
      sku
      variations {
        ...ItemAttributeFragment
      }
      videos {
        ...VideoFragment
      }
    }
    vat
    videos {
      fileName
      url
    }
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "core_products": [
      {
        "id": "4",
        "additionalImages": [Image],
        "assets": [Document],
        "bestVariation": Item,
        "brand": Brand,
        "breadcrumb": [Category],
        "categories": [Category],
        "category": Category,
        "documents": [Document],
        "features": [ProductFeature],
        "globalContent": Raster,
        "image": Image,
        "link": Link,
        "longDescription": "xyz789",
        "materials": ["xyz789"],
        "name": "abc123",
        "page": MaintainedProductPage,
        "recommendations": ProductRecommendations,
        "reviews": Reviews,
        "sellingPoints": ["xyz789"],
        "seo": Seo,
        "shortDescription": "abc123",
        "variations": [Item],
        "vat": "xyz789",
        "videos": [Video]
      }
    ]
  }
}

core_redirect

Description

Gets the redirect for a specific URL
If no redirect exists, the result is empty.

Response

Returns a Redirect

Arguments
Name Description
url - String! The URL to get the redirect for

Example

Query
query Core_redirect($url: String!) {
  core_redirect(url: $url) {
    responseCode
    url
  }
}
Variables
{"url": "xyz789"}
Response
{
  "data": {
    "core_redirect": {
      "responseCode": 987,
      "url": "xyz789"
    }
  }
}

core_resolveUrl

Description

If possible, resolves the given URL to a link consisting of LinkType and ID
Maintained redirects and SEO terms are taken into account.

Response

Returns a ResolvedLink

Arguments
Name Description
url - String! The URL to get the resolved link for

Example

Query
query Core_resolveUrl($url: String!) {
  core_resolveUrl(url: $url) {
    linkId
    linkType
    responseCode
    url
  }
}
Variables
{"url": "abc123"}
Response
{
  "data": {
    "core_resolveUrl": {
      "linkId": 4,
      "linkType": "ARTICLE",
      "responseCode": 123,
      "url": "abc123"
    }
  }
}

core_searchSuggest

Description

Search suggestions are based on the given query

Response

Returns a SearchSuggest!

Arguments
Name Description
query - String! The query to generate search suggestions for

Example

Query
query Core_searchSuggest($query: String!) {
  core_searchSuggest(query: $query) {
    brandSuggests {
      brands {
        ...BrandFragment
      }
      match
    }
    categorySearchSuggests {
      category {
        ...CategoryFragment
      }
      searchTerm
      totalCount
    }
    categorySuggests {
      categories {
        ...CategoryFragment
      }
      match
    }
    productSuggests {
      match
      products {
        ...ProductFragment
      }
    }
    topSearchSuggests {
      searchTerm
      totalCount
    }
  }
}
Variables
{"query": "xyz789"}
Response
{
  "data": {
    "core_searchSuggest": {
      "brandSuggests": [BrandSuggest],
      "categorySearchSuggests": [CategorySearchSuggest],
      "categorySuggests": [CategorySuggest],
      "productSuggests": [ProductSuggest],
      "topSearchSuggests": [TopSearchSuggest]
    }
  }
}

core_searchTermRecommendations

Description

Search term recommendations for a given search term

Response

Returns a SearchTermRecommendations!

Arguments
Name Description
paging - RecommendationPaging! Paging to list recommended search terms. Default = {limit: 100, offset: 0}
searchTerm - String! Search term to find for recommendations

Example

Query
query Core_searchTermRecommendations(
  $paging: RecommendationPaging!,
  $searchTerm: String!
) {
  core_searchTermRecommendations(
    paging: $paging,
    searchTerm: $searchTerm
  ) {
    searchTerms
    totalCount
  }
}
Variables
{
  "paging": {"limit": 100, "offset": 0},
  "searchTerm": "xyz789"
}
Response
{
  "data": {
    "core_searchTermRecommendations": {
      "searchTerms": ["xyz789"],
      "totalCount": 123
    }
  }
}

core_teaserSnippets

Description

Returns teasers defined as teaser snippets in the back office

Response

Returns [TeaserSnippet]!

Arguments
Name Description
names - [String!]! Teaser snippet names as defined in the back office

Example

Query
query Core_teaserSnippets($names: [String!]!) {
  core_teaserSnippets(names: $names) {
    name
    teaser {
      meta {
        ...TeaserMetaFragment
      }
      name
    }
  }
}
Variables
{"names": ["xyz789"]}
Response
{
  "data": {
    "core_teaserSnippets": [
      {
        "name": "xyz789",
        "teaser": TeaserAttribute
      }
    ]
  }
}

core_topsellerRecommendations

Description

Top selling products in one or more given categories
By default, the top sellers are disabled and need to be enabled in the backend (see ShopApiConfigurer#recommendationsWhitelist and RecommendationType#CATEGORY_TOPSELLER).

Response

Returns a ProductRecommendations!

Arguments
Name Description
categoryIds - [String!]! Category IDs to find for top sellers
includingReducedProducts - Boolean! If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed. Default = true
paging - RecommendationPaging! Paging to list recommended products. Default = {limit: 100, offset: 0}

Example

Query
query Core_topsellerRecommendations(
  $categoryIds: [String!]!,
  $includingReducedProducts: Boolean!,
  $paging: RecommendationPaging!
) {
  core_topsellerRecommendations(
    categoryIds: $categoryIds,
    includingReducedProducts: $includingReducedProducts,
    paging: $paging
  ) {
    products {
      id
      additionalImages {
        ...ImageFragment
      }
      assets {
        ... on Document {
          ...DocumentFragment
        }
        ... on Image {
          ...ImageFragment
        }
        ... on Video {
          ...VideoFragment
        }
      }
      bestVariation {
        ...ItemFragment
      }
      brand {
        ...BrandFragment
      }
      breadcrumb {
        ...CategoryFragment
      }
      categories {
        ...CategoryFragment
      }
      category {
        ...CategoryFragment
      }
      documents {
        ...DocumentFragment
      }
      features {
        ...ProductFeatureFragment
      }
      globalContent {
        ...RasterFragment
      }
      image {
        ...ImageFragment
      }
      link {
        ...LinkFragment
      }
      longDescription
      materials
      name
      page {
        ...MaintainedProductPageFragment
      }
      recommendations {
        ...ProductRecommendationsFragment
      }
      reviews {
        ...ReviewsFragment
      }
      sellingPoints
      seo {
        ...SeoFragment
      }
      shortDescription
      variations {
        ...ItemFragment
      }
      vat
      videos {
        ...VideoFragment
      }
    }
    totalCount
  }
}
Variables
{
  "categoryIds": ["xyz789"],
  "includingReducedProducts": true,
  "paging": {"limit": 100, "offset": 0}
}
Response
{
  "data": {
    "core_topsellerRecommendations": {
      "products": [Product],
      "totalCount": 123
    }
  }
}

core_translations

Description

Fetch a list of translations

Response

Returns a Translations!

Arguments
Name Description
filter - TranslationFilter Filter to select translation by translation key

Example

Query
query Core_translations($filter: TranslationFilter) {
  core_translations(filter: $filter) {
    totalCount
    translations {
      key
      value
    }
  }
}
Variables
{"filter": TranslationFilter}
Response
{
  "data": {
    "core_translations": {
      "totalCount": 123,
      "translations": [Translation]
    }
  }
}

payments_find

Description

Filters a payment by its interface ID

Response

Returns a Payment

Arguments
Name Description
interfaceId - ID! The interface ID (see interfaceId of Payment)

Example

Query
query Payments_find($interfaceId: ID!) {
  payments_find(interfaceId: $interfaceId) {
    interfaceId
    methodCodes
  }
}
Variables
{"interfaceId": 4}
Response
{
  "data": {
    "payments_find": {
      "interfaceId": 4,
      "methodCodes": ["xyz789"]
    }
  }
}

payments_findAll

Description

Fetch all available payments

Response

Returns [Payment]!

Example

Query
query Payments_findAll {
  payments_findAll {
    interfaceId
    methodCodes
  }
}
Response
{
  "data": {
    "payments_findAll": [
      {
        "interfaceId": "4",
        "methodCodes": ["abc123"]
      }
    ]
  }
}

shop_findCart

Description

Fetch a specific cart for the current user

Response

Returns a Cart

Arguments
Name Description
cartId - ID The ID of the cart to fetch

Example

Query
query Shop_findCart($cartId: ID) {
  shop_findCart(cartId: $cartId) {
    active
    attribute
    attributes
    availableShippingMethods {
      amount {
        ...MoneyFragment
      }
      description
      freeShipping
      name
      shipperId
    }
    billingAddress {
      additions
      attributes
      city
      company
      country {
        ...CountryFragment
      }
      email
      firstname
      id
      lastname
      notes
      number
      phone
      postcode
      salutation {
        ...SalutationFragment
      }
      street
      title
    }
    createdAt
    editable
    guestId
    id
    isDefault
    name
    selectedPaymentMethod {
      code
      interfaceId
      label
    }
    selectedShippingMethod {
      amount {
        ...MoneyFragment
      }
      description
      freeShipping
      name
      shipperId
    }
    shared
    shippingAddresses {
      additions
      attributes
      city
      company
      country {
        ...CountryFragment
      }
      email
      firstname
      id
      isShop
      isStation
      lastname
      notes
      number
      phone
      postcode
      salutation {
        ...SalutationFragment
      }
      street
      title
    }
    details {
      articleCount
      attainableInfos {
        ...AttainableInfoFragment
      }
      deliveryInfo {
        ...DeliveryInfoFragment
      }
      discountInfo {
        ...CartDiscountFragment
      }
      discountWithoutCombinable {
        ...MoneyFragment
      }
      freeShippingInfo {
        ...FreeShippingInfoFragment
      }
      informativeBenefits {
        ...InformativeBenefitInfoFragment
      }
      positionCount
      positions {
        ...CartEntryFragment
      }
      promoItems {
        ... on FreeAddonsInfo {
          ...FreeAddonsInfoFragment
        }
        ... on FreeItemsInfo {
          ...FreeItemsInfoFragment
        }
        ... on SpecialPriceInfo {
          ...SpecialPriceInfoFragment
        }
      }
      promotionsSaving {
        ...MoneyFragment
      }
      subtotal {
        ...MoneyFragment
      }
      total {
        ...MoneyFragment
      }
      totalSavings {
        ...MoneyFragment
      }
      voucherCodeStatus
      voucherLessSavings {
        ...MoneyFragment
      }
      voucherSavings {
        ...MoneyFragment
      }
      vouchers
    }
  }
}
Variables
{"cartId": 4}
Response
{
  "data": {
    "shop_findCart": {
      "active": true,
      "attribute": Object,
      "attributes": Object,
      "availableShippingMethods": [ShippingMethod],
      "billingAddress": BillingAddress,
      "createdAt": "2007-12-03T10:15:30Z",
      "editable": true,
      "guestId": "xyz789",
      "id": "4",
      "isDefault": true,
      "name": "abc123",
      "selectedPaymentMethod": PaymentMethod,
      "selectedShippingMethod": ShippingMethod,
      "shared": true,
      "shippingAddresses": [ShippingAddress],
      "details": CartDetails
    }
  }
}

shop_findCarts

Description

Fetch all carts for the current user

Response

Returns [Cart]!

Example

Query
query Shop_findCarts {
  shop_findCarts {
    active
    attribute
    attributes
    availableShippingMethods {
      amount {
        ...MoneyFragment
      }
      description
      freeShipping
      name
      shipperId
    }
    billingAddress {
      additions
      attributes
      city
      company
      country {
        ...CountryFragment
      }
      email
      firstname
      id
      lastname
      notes
      number
      phone
      postcode
      salutation {
        ...SalutationFragment
      }
      street
      title
    }
    createdAt
    editable
    guestId
    id
    isDefault
    name
    selectedPaymentMethod {
      code
      interfaceId
      label
    }
    selectedShippingMethod {
      amount {
        ...MoneyFragment
      }
      description
      freeShipping
      name
      shipperId
    }
    shared
    shippingAddresses {
      additions
      attributes
      city
      company
      country {
        ...CountryFragment
      }
      email
      firstname
      id
      isShop
      isStation
      lastname
      notes
      number
      phone
      postcode
      salutation {
        ...SalutationFragment
      }
      street
      title
    }
    details {
      articleCount
      attainableInfos {
        ...AttainableInfoFragment
      }
      deliveryInfo {
        ...DeliveryInfoFragment
      }
      discountInfo {
        ...CartDiscountFragment
      }
      discountWithoutCombinable {
        ...MoneyFragment
      }
      freeShippingInfo {
        ...FreeShippingInfoFragment
      }
      informativeBenefits {
        ...InformativeBenefitInfoFragment
      }
      positionCount
      positions {
        ...CartEntryFragment
      }
      promoItems {
        ... on FreeAddonsInfo {
          ...FreeAddonsInfoFragment
        }
        ... on FreeItemsInfo {
          ...FreeItemsInfoFragment
        }
        ... on SpecialPriceInfo {
          ...SpecialPriceInfoFragment
        }
      }
      promotionsSaving {
        ...MoneyFragment
      }
      subtotal {
        ...MoneyFragment
      }
      total {
        ...MoneyFragment
      }
      totalSavings {
        ...MoneyFragment
      }
      voucherCodeStatus
      voucherLessSavings {
        ...MoneyFragment
      }
      voucherSavings {
        ...MoneyFragment
      }
      vouchers
    }
  }
}
Response
{
  "data": {
    "shop_findCarts": [
      {
        "active": true,
        "attribute": Object,
        "attributes": Object,
        "availableShippingMethods": [ShippingMethod],
        "billingAddress": BillingAddress,
        "createdAt": "2007-12-03T10:15:30Z",
        "editable": true,
        "guestId": "xyz789",
        "id": 4,
        "isDefault": true,
        "name": "abc123",
        "selectedPaymentMethod": PaymentMethod,
        "selectedShippingMethod": ShippingMethod,
        "shared": false,
        "shippingAddresses": [ShippingAddress],
        "details": CartDetails
      }
    ]
  }
}

shop_findWishlist

Description

Fetch a specific wishlist for the current user

Response

Returns a Wishlist

Arguments
Name Description
wishlistId - ID

The ID of the wishlist to fetch

If no wishlist ID is provided, the best available wishlist will be loaded.

Example

Query
query Shop_findWishlist($wishlistId: ID) {
  shop_findWishlist(wishlistId: $wishlistId) {
    createdAt
    entries {
      creationTime
      id
      item {
        ...ItemFragment
      }
      product {
        ...ProductFragment
      }
      valid
    }
    id
    name
  }
}
Variables
{"wishlistId": 4}
Response
{
  "data": {
    "shop_findWishlist": {
      "createdAt": "2007-12-03T10:15:30Z",
      "entries": [WishlistEntry],
      "id": 4,
      "name": "xyz789"
    }
  }
}

shop_findWishlists

Description

Fetch all wishlists for the current user

Response

Returns [Wishlist]!

Example

Query
query Shop_findWishlists {
  shop_findWishlists {
    createdAt
    entries {
      creationTime
      id
      item {
        ...ItemFragment
      }
      product {
        ...ProductFragment
      }
      valid
    }
    id
    name
  }
}
Response
{
  "data": {
    "shop_findWishlists": [
      {
        "createdAt": "2007-12-03T10:15:30Z",
        "entries": [WishlistEntry],
        "id": "4",
        "name": "abc123"
      }
    ]
  }
}

shop_globalParameters

Description

Collection of non-core global parameters

Response

Returns a ShopGlobalParameters!

Example

Query
query Shop_globalParameters {
  shop_globalParameters {
    benefitHeader
    campaignHeader
    productsPerPage
    productsPerSearchPage
  }
}
Response
{
  "data": {
    "shop_globalParameters": {
      "benefitHeader": "abc123",
      "campaignHeader": "xyz789",
      "productsPerPage": 123,
      "productsPerSearchPage": 123
    }
  }
}

tracking_lastSearchTerms

Description

Fetches the recently executed searches of a user

Response

Returns a LastSearchTerms!

Arguments
Name Description
userId - ID The UUID of the user
If no userId is provided, the searches of the current user are returned.

Example

Query
query Tracking_lastSearchTerms($userId: ID) {
  tracking_lastSearchTerms(userId: $userId) {
    count
    searchTerms {
      hits
      searchDate
      searchTerm
    }
  }
}
Variables
{"userId": "4"}
Response
{
  "data": {
    "tracking_lastSearchTerms": {
      "count": 123,
      "searchTerms": [LastSearchTerm]
    }
  }
}

tracking_lastSeenItems

Description

Fetches the last viewed items of a user
Requires tracking of ProductViewEvent and ItemViewEvent with mutation tracking_addEvents to make it work properly! The amount of items to be saved can be set in configuration (default is 6).

Response

Returns a LastSeenItems!

Arguments
Name Description
userId - ID The UUID of the user
If no userId is provided, the items of the current user are returned.

Example

Query
query Tracking_lastSeenItems($userId: ID) {
  tracking_lastSeenItems(userId: $userId) {
    count
    items {
      item {
        ...ItemFragment
      }
      viewDate
    }
  }
}
Variables
{"userId": 4}
Response
{
  "data": {
    "tracking_lastSeenItems": {
      "count": 123,
      "items": [LastSeenItem]
    }
  }
}

version

Description

A simple query for testing purposes only

Response

Returns a String

Example

Query
query Version {
  version
}
Response
{"data": {"version": "xyz789"}}

Mutations

account_updateCustomer

Description

Update of the current customer's data

Response

Returns an UpdateCustomerResult

Arguments
Name Description
data - UpdateCustomerInput! The customer data

Example

Query
mutation Account_updateCustomer($data: UpdateCustomerInput!) {
  account_updateCustomer(data: $data) {
    ... on UpdateCustomerProblems {
      problems {
        ...UpdateCustomerProblemFragment
      }
    }
    ... on UpdateCustomerSuccess {
      customer {
        ...CustomerFragment
      }
    }
  }
}
Variables
{"data": UpdateCustomerInput}
Response
{
  "data": {
    "account_updateCustomer": UpdateCustomerProblems
  }
}

cart_addAllToWishlist

Description

Remove all positions from the active/default cart and add them to the wishlist of the current user

Response

Returns a CartToWishlistResult

Arguments
Name Description
wishlistId - ID

The ID of the wishlist to which the positions should be moved

If this ID is null, the positions will be moved to the active/default wishlist.

If no wishlist exists for the current user, a new wishlist will be created.

Example

Query
mutation Cart_addAllToWishlist($wishlistId: ID) {
  cart_addAllToWishlist(wishlistId: $wishlistId) {
    ... on CartToWishlistProblems {
      problems {
        ...CartToWishlistProblemFragment
      }
    }
    ... on CartToWishlistSuccess {
      wishlist {
        ...WishlistFragment
      }
    }
  }
}
Variables
{"wishlistId": "4"}
Response
{
  "data": {
    "cart_addAllToWishlist": CartToWishlistProblems
  }
}

cart_delete

Description

Delete a cart (useful in multi cart environments)

Returns true if the cart was successfully deleted, false otherwise.

Response

Returns a Boolean

Arguments
Name Description
data - DeleteCartInput! Operation to delete a cart

Example

Query
mutation Cart_delete($data: DeleteCartInput!) {
  cart_delete(data: $data)
}
Variables
{"data": DeleteCartInput}
Response
{"data": {"cart_delete": false}}

cart_empty

Description

Remove all positions from a cart of the current user

Response

Returns an EmptyCartResult

Arguments
Name Description
cartId - ID! The ID of the cart to be emptied

Example

Query
mutation Cart_empty($cartId: ID!) {
  cart_empty(cartId: $cartId) {
    ... on EmptyCartProblems {
      problems {
        ...EmptyCartProblemFragment
      }
    }
    ... on EmptyCartSuccess {
      cart {
        ...CartFragment
      }
    }
  }
}
Variables
{"cartId": "4"}
Response
{"data": {"cart_empty": EmptyCartProblems}}

cart_merge

Description

Merging the user's cart created prior to login with a already persisted cart owned by that user

How these carts are merged is based on the merge strategy options provided.

This mutation is only allowed for logged in users (Scope: shop-customer).

Response

Returns a MergeCartResult

Arguments
Name Description
data - MergeCartInput! IDs of carts to be merged and merge strategy options

Example

Query
mutation Cart_merge($data: MergeCartInput!) {
  cart_merge(data: $data) {
    ... on MergeCartProblems {
      problems {
        ...MergeCartProblemFragment
      }
    }
    ... on MergeCartSuccess {
      cart {
        ...CartFragment
      }
    }
  }
}
Variables
{"data": MergeCartInput}
Response
{"data": {"cart_merge": MergeCartProblems}}

cart_update

Description

Updating the user's cart like adding a position or a voucher, setting addresses or payment/shipping method

This mutation is also used to create a new cart if no cart exists for the current user.

Response

Returns an UpdateCartResult

Arguments
Name Description
data - UpdateCartInput! Operations to update a cart

Example

Query
mutation Cart_update($data: UpdateCartInput!) {
  cart_update(data: $data) {
    ... on UpdateCartProblems {
      problems {
        ...UpdateCartProblemFragment
      }
    }
    ... on UpdateCartSuccess {
      cart {
        ...CartFragment
      }
    }
  }
}
Variables
{"data": UpdateCartInput}
Response
{"data": {"cart_update": UpdateCartProblems}}

core_calculateCart

Description

Calculates the cart details through the promotion engine

Response

Returns a CartDetails

Arguments
Name Description
id - ID! The ID of the cart for which the details are calculated

Example

Query
mutation Core_calculateCart($id: ID!) {
  core_calculateCart(id: $id) {
    articleCount
    attainableInfos {
      attainable
      customerIdentifier
      failureDescriptions
      promotion {
        ...PromotionFragment
      }
      successful
      voucherCode
      voucherName
    }
    deliveryInfo {
      deliveryCost {
        ...MoneyFragment
      }
      deliveryTimeDescription
      discountedDeliveryCost {
        ...MoneyFragment
      }
      freeShippingPossible
      shipper
    }
    discountInfo {
      capped
      discount {
        ...MoneyFragment
      }
      discountPercentage
      discountWithoutCombinable {
        ...MoneyFragment
      }
      promotionDescription
      promotionName
    }
    discountWithoutCombinable {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    freeShippingInfo {
      free
      image {
        ...ImageFragment
      }
      promotion {
        ...PromotionFragment
      }
      title
      voucher
    }
    informativeBenefits {
      image {
        ...ImageFragment
      }
      promotion {
        ...PromotionFragment
      }
      title
      type
    }
    positionCount
    positions {
      details {
        ...ItemFragment
      }
      discountAmount {
        ...MoneyFragment
      }
      discountInfo {
        ...DiscountFragment
      }
      discountPercentage
      id
      promotion {
        ...PromotionFragment
      }
      quantity
      totalCurrentPrice {
        ...MoneyFragment
      }
      totalDiscount {
        ...MoneyFragment
      }
      totalOldPrice {
        ...MoneyFragment
      }
      totalPositionPrice {
        ...MoneyFragment
      }
      voucher
    }
    promoItems {
      ... on FreeAddonsInfo {
        ...FreeAddonsInfoFragment
      }
      ... on FreeItemsInfo {
        ...FreeItemsInfoFragment
      }
      ... on SpecialPriceInfo {
        ...SpecialPriceInfoFragment
      }
    }
    promotionsSaving {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    subtotal {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    total {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    totalSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    voucherCodeStatus
    voucherLessSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    voucherSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    vouchers
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "core_calculateCart": {
      "articleCount": 123,
      "attainableInfos": [AttainableInfo],
      "deliveryInfo": DeliveryInfo,
      "discountInfo": CartDiscount,
      "discountWithoutCombinable": Money,
      "freeShippingInfo": FreeShippingInfo,
      "informativeBenefits": [InformativeBenefitInfo],
      "positionCount": 123,
      "positions": [CartEntry],
      "promoItems": [FreeAddonsInfo],
      "promotionsSaving": Money,
      "subtotal": Money,
      "total": Money,
      "totalSavings": Money,
      "voucherCodeStatus": "ATTAINABLE",
      "voucherLessSavings": Money,
      "voucherSavings": Money,
      "vouchers": ["xyz789"]
    }
  }
}

core_calculateOrder

Description

Calculates an order through the promotion engine and consumes redeemed vouchers

Response

Returns a CartDetails

Arguments
Name Description
id - ID! The ID of the cart for which the order is calculated

Example

Query
mutation Core_calculateOrder($id: ID!) {
  core_calculateOrder(id: $id) {
    articleCount
    attainableInfos {
      attainable
      customerIdentifier
      failureDescriptions
      promotion {
        ...PromotionFragment
      }
      successful
      voucherCode
      voucherName
    }
    deliveryInfo {
      deliveryCost {
        ...MoneyFragment
      }
      deliveryTimeDescription
      discountedDeliveryCost {
        ...MoneyFragment
      }
      freeShippingPossible
      shipper
    }
    discountInfo {
      capped
      discount {
        ...MoneyFragment
      }
      discountPercentage
      discountWithoutCombinable {
        ...MoneyFragment
      }
      promotionDescription
      promotionName
    }
    discountWithoutCombinable {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    freeShippingInfo {
      free
      image {
        ...ImageFragment
      }
      promotion {
        ...PromotionFragment
      }
      title
      voucher
    }
    informativeBenefits {
      image {
        ...ImageFragment
      }
      promotion {
        ...PromotionFragment
      }
      title
      type
    }
    positionCount
    positions {
      details {
        ...ItemFragment
      }
      discountAmount {
        ...MoneyFragment
      }
      discountInfo {
        ...DiscountFragment
      }
      discountPercentage
      id
      promotion {
        ...PromotionFragment
      }
      quantity
      totalCurrentPrice {
        ...MoneyFragment
      }
      totalDiscount {
        ...MoneyFragment
      }
      totalOldPrice {
        ...MoneyFragment
      }
      totalPositionPrice {
        ...MoneyFragment
      }
      voucher
    }
    promoItems {
      ... on FreeAddonsInfo {
        ...FreeAddonsInfoFragment
      }
      ... on FreeItemsInfo {
        ...FreeItemsInfoFragment
      }
      ... on SpecialPriceInfo {
        ...SpecialPriceInfoFragment
      }
    }
    promotionsSaving {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    subtotal {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    total {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    totalSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    voucherCodeStatus
    voucherLessSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    voucherSavings {
      amount
      currencyCode
      currencySymbol
      intAmount
      precision
      stringValue
    }
    vouchers
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "core_calculateOrder": {
      "articleCount": 123,
      "attainableInfos": [AttainableInfo],
      "deliveryInfo": DeliveryInfo,
      "discountInfo": CartDiscount,
      "discountWithoutCombinable": Money,
      "freeShippingInfo": FreeShippingInfo,
      "informativeBenefits": [InformativeBenefitInfo],
      "positionCount": 987,
      "positions": [CartEntry],
      "promoItems": [FreeAddonsInfo],
      "promotionsSaving": Money,
      "subtotal": Money,
      "total": Money,
      "totalSavings": Money,
      "voucherCodeStatus": "ATTAINABLE",
      "voucherLessSavings": Money,
      "voucherSavings": Money,
      "vouchers": ["abc123"]
    }
  }
}

echo

Description

A simple mutation for testing purposes only

Response

Returns a String!

Arguments
Name Description
message - String! Test text

Example

Query
mutation Echo($message: String!) {
  echo(message: $message)
}
Variables
{"message": "xyz789"}
Response
{"data": {"echo": "abc123"}}

novosales_createReview

Description

Create a new product review

Response

Returns a Boolean!

Arguments
Name Description
input - CreateReview! Operation to create a review

Example

Query
mutation Novosales_createReview($input: CreateReview!) {
  novosales_createReview(input: $input)
}
Variables
{"input": CreateReview}
Response
{"data": {"novosales_createReview": false}}

novosales_updateReview

Description

Update an existing product review

Response

Returns a Boolean!

Arguments
Name Description
input - UpdateReview! Operations to update a review

Example

Query
mutation Novosales_updateReview($input: UpdateReview!) {
  novosales_updateReview(input: $input)
}
Variables
{"input": UpdateReview}
Response
{"data": {"novosales_updateReview": true}}

shop_submitOrder

Description

Stores a cart of the current user including payment data as an order for further processing

Response

Returns an OrderSubmitResult

Arguments
Name Description
cartId - ID! The ID of the cart for which an order is to be placed

Example

Query
mutation Shop_submitOrder($cartId: ID!) {
  shop_submitOrder(cartId: $cartId) {
    ... on OrderSubmitProblems {
      problems {
        ...OrderSubmitProblemFragment
      }
    }
    ... on OrderSubmitSuccess {
      id
      redirectUrl
    }
  }
}
Variables
{"cartId": 4}
Response
{"data": {"shop_submitOrder": OrderSubmitProblems}}

tracking_addEvents

Description

Triggers a single or a list of events used to provide a range of functionalities in the shop (e.g. recommendations, back office dashboards, customer segmentation)

Response

Returns a Boolean

Arguments
Name Description
events - [TrackingEventInput!]! List of events to trigger

Example

Query
mutation Tracking_addEvents($events: [TrackingEventInput!]!) {
  tracking_addEvents(events: $events)
}
Variables
{"events": [TrackingEventInput]}
Response
{"data": {"tracking_addEvents": false}}

tracking_init

Description

Triggers any required events when a new session is started
When a new session is started, a StartSessionEvent, an InformationEvent and a TouchpointEvent should be triggered. All of these events are triggered with this mutation. This means that triggering the other events is no longer necessary.
Should be triggered before any other request.

Response

Returns a Boolean!

Arguments
Name Description
event - StartSessionEvent! StartSessionEvent with all necessary information to initialize a new session

Example

Query
mutation Tracking_init($event: StartSessionEvent!) {
  tracking_init(event: $event)
}
Variables
{"event": StartSessionEvent}
Response
{"data": {"tracking_init": false}}

tracking_setPrivacyConsent

Description

Setting the user's consent for tracking
Must be done once before tracking.

Response

Returns a Boolean

Arguments
Name Description
consent - PrivacyConsentInput! The user's consent for tracking

Example

Query
mutation Tracking_setPrivacyConsent($consent: PrivacyConsentInput!) {
  tracking_setPrivacyConsent(consent: $consent)
}
Variables
{"consent": PrivacyConsentInput}
Response
{"data": {"tracking_setPrivacyConsent": true}}

wishlist_addAllToCart

Description

Remove all positions from a wishlist and add them to a cart of the current user

Response

Returns a WishlistToCartResult

Arguments
Name Description
cartId - ID

The ID of the cart to which the positions should be moved

If this ID is null, the positions will be moved to the active/default cart. If no cart exists for the current user, a new cart will be created.

wishlistId - ID

The ID of the wishlist whose positions are to be moved

If this ID is null, the positions of the active/default wishlist will be moved.

Example

Query
mutation Wishlist_addAllToCart(
  $cartId: ID,
  $wishlistId: ID
) {
  wishlist_addAllToCart(
    cartId: $cartId,
    wishlistId: $wishlistId
  ) {
    ... on WishlistToCartProblems {
      problems {
        ...WishlistToCartProblemFragment
      }
    }
    ... on WishlistToCartSuccess {
      cart {
        ...CartFragment
      }
    }
  }
}
Variables
{"cartId": 4, "wishlistId": "4"}
Response
{
  "data": {
    "wishlist_addAllToCart": WishlistToCartProblems
  }
}

wishlist_create

Description

Create a new wishlist (useful in multi wishlist environments)

Response

Returns a CreateWishlistResult

Arguments
Name Description
data - CreateWishlistInput Operations to create a wishlist

Example

Query
mutation Wishlist_create($data: CreateWishlistInput) {
  wishlist_create(data: $data) {
    ... on CreateWishlistProblems {
      problems {
        ...CreateWishlistProblemFragment
      }
    }
    ... on CreateWishlistSuccess {
      wishlist {
        ...WishlistFragment
      }
    }
  }
}
Variables
{"data": CreateWishlistInput}
Response
{"data": {"wishlist_create": CreateWishlistProblems}}

wishlist_delete

Description

Delete a wishlist (useful in multi wishlist environments)

Returns true if the wishlist was successfully deleted, false otherwise.

Response

Returns a Boolean

Arguments
Name Description
data - DeleteWishlistInput! Operation to delete a wishlist

Example

Query
mutation Wishlist_delete($data: DeleteWishlistInput!) {
  wishlist_delete(data: $data)
}
Variables
{"data": DeleteWishlistInput}
Response
{"data": {"wishlist_delete": false}}

wishlist_empty

Description

Remove all positions from a wishlist of the current user

Response

Returns an EmptyWishlistResult

Arguments
Name Description
wishlistId - ID

The ID of the wishlist to be emptied

If this ID is null, the active/default wishlist will be emptied.

Example

Query
mutation Wishlist_empty($wishlistId: ID) {
  wishlist_empty(wishlistId: $wishlistId) {
    ... on EmptyWishlistProblems {
      problems {
        ...EmptyWishlistProblemFragment
      }
    }
    ... on EmptyWishlistSuccess {
      wishlist {
        ...WishlistFragment
      }
    }
  }
}
Variables
{"wishlistId": "4"}
Response
{"data": {"wishlist_empty": EmptyWishlistProblems}}

wishlist_merge

Description

Merging the user's wishlist created prior to login with a already persisted wishlist owned by that user

How these wishlists are merged is based on the merge strategy options provided. This mutation is only allowed for logged in users (Scope: shop-customer).

Response

Returns a MergeWishlistResult

Arguments
Name Description
data - MergeWishlistInput! IDs of wishlist to be merged and merge strategy options

Example

Query
mutation Wishlist_merge($data: MergeWishlistInput!) {
  wishlist_merge(data: $data) {
    ... on MergeWishlistProblems {
      problems {
        ...MergeWishlistProblemFragment
      }
    }
    ... on MergeWishlistSuccess {
      wishlist {
        ...WishlistFragment
      }
    }
  }
}
Variables
{"data": MergeWishlistInput}
Response
{"data": {"wishlist_merge": MergeWishlistProblems}}

wishlist_update

Description

Updating the current user's wishlist like adding a product or item

This mutation is also used to create a new wishlist if no wishlist exists for the current user.

Response

Returns an UpdateWishlistResult

Arguments
Name Description
data - UpdateWishlistInput! Operations to update a wishlist

Example

Query
mutation Wishlist_update($data: UpdateWishlistInput!) {
  wishlist_update(data: $data) {
    ... on UpdateWishlistProblems {
      problems {
        ...UpdateWishlistProblemFragment
      }
    }
    ... on UpdateWishlistSuccess {
      wishlist {
        ...WishlistFragment
      }
    }
  }
}
Variables
{"data": UpdateWishlistInput}
Response
{"data": {"wishlist_update": UpdateWishlistProblems}}

Types

AccountAddressValidationProblem

Description

Problems if the Address Input has invalid fields

Fields
Field Name Description
message - String! The failure reason to display with field information
Example
{"message": "xyz789"}

AddAttribute

Description

Operation to add a new attribute to a cart

Fields
Input Field Description
name - String! The name of the attribute to add
value - Object!

The value of the attribute

Allowed are GraphQL scalars String, Int, Float, Boolean, Objects and arrays of these types.

Examples:

# String
"addAttribute": {
  "name": "test",
  "value": "bert"
}
# Int
"addAttribute": {
  "name": "int",
  "value": 1056
}
# Float
"addAttribute": {
  "name": "float",
  "value": 10.56
}
# Boolean
"addAttribute": {
  "name": "boolean",
  "value": true
}
# Object
"addAttribute": {
  "name": "object",
  "value": {
    "attr1": "test",
    "attr2": 10.56,
    "attr3": false,
    "attr4": [1, 2]
  }
}
# Array
"addAttribute": {
  "name": "list",
  "value": ["one", "two"]
}
Example
{
  "name": "xyz789",
  "value": Object
}

AddItemToWishlist

Description

Operation to add an item to a wishlist

Fields
Input Field Description
setItemId - SetItemId! Sets the item ID
Example
{"setItemId": SetItemId}

AddPhoneNo

Description

Operation to add the phoneNo

Fields
Input Field Description
value - PhoneInput! The phone number to add
Example
{"value": PhoneInput}

AddProductToWishlist

Description

Operation to add a product to a wishlist

Fields
Input Field Description
setProductId - SetProductId! Sets the product ID
Example
{"setProductId": SetProductId}

AddPromoItemOperation

Description

The possible operations on promotion items. As long as there are no unions of input types, we need to define inputs that behave like unions. Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
setFreeAddons - SetFreeAddons Adds free addons
setFreeItems - SetFreeItems Adds free items
setSpecialPriceItems - SetSpecialPriceItems Adds items with a special price
Example
{
  "setFreeAddons": SetFreeAddons,
  "setFreeItems": SetFreeItems,
  "setSpecialPriceItems": SetSpecialPriceItems
}

AddShippingAddress

Description

Operation to add a new shipping address

Fields
Input Field Description
value - AddressInput The shipping address
Example
{"value": AddressInput}

AddToBasketEvent

Description

Add to basket event

Fields
Input Field Description
itemId - ID! The ID of the added item
source - ProductSourceInput! The origin from which the item was added (e.g. NOTEPAD if the item was added from the wishlist)
Example
{"itemId": "4", "source": "BASKET"}

AddToWishlistEvent

Description

Add to wishlist event

Fields
Input Field Description
itemId - ID! The ID of the added item
source - ProductSourceInput! The origin from which the item was added (e.g. PRODUCT_VIEW if the item was added from a product detail page)
Example
{"itemId": "4", "source": "BASKET"}

AddVoucher

Description

Operation to add a voucher code

Fields
Input Field Description
code - String! The voucher code
Example
{"code": "abc123"}

Address

Description

An address

Fields
Field Name Description
additions - [String]! The address additions
attributes - JSON

Additional attributes as JSON
Example:

{
  "attribute1": "value1",
  "attribute2": {
    "test": 157
  },
  "attribute3": 5.90
}
city - String! The city specified for this address
company - String The company specified for this address
country - Country! The country code and label for this address
email - String The email
firstname - String! The first name of the customer
id - ID ID of this address
lastname - String! The last name of the customer
notes - String Notes accompanying the order
number - String! The street number for this address
phone - String The phone number
postcode - String! The postal code of this address
salutation - Salutation The salutation of the customer
street - String! The street name of this address
title - String The title of the customer
Possible Types
Address Types

BillingAddress

ShippingAddress

Example
{
  "additions": ["xyz789"],
  "attributes": {},
  "city": "xyz789",
  "company": "xyz789",
  "country": Country,
  "email": "xyz789",
  "firstname": "abc123",
  "id": "4",
  "lastname": "xyz789",
  "notes": "abc123",
  "number": "abc123",
  "phone": "xyz789",
  "postcode": "xyz789",
  "salutation": Salutation,
  "street": "abc123",
  "title": "abc123"
}

AddressBook

Description

The address book of a customer

Fields
Field Name Description
billingAddress - BillingAddress The billing address of the customer
defaultShippingAddress - ShippingAddress The default shipping address of the customer
shippingAddresses - [ShippingAddress]! The other shipping addresses of the customer
Example
{
  "billingAddress": BillingAddress,
  "defaultShippingAddress": ShippingAddress,
  "shippingAddresses": [ShippingAddress]
}

AddressInput

Description

The address information

Fields
Input Field Description
additions - [String] The address additions
attributes - JSON

Additional attributes as JSON
Example:

{
  "attribute1": "value1",
  "attribute2": {
    "test": 157
  },
  "attribute3": 5.90
}
city - String! The city specified for the address
company - String The company specified for the address
country - String! The country code and label for the address
email - String The email
firstname - String! The first name of the customer
isShop - Boolean true if this shipping address is a pickup shop. Default false. Default = false
isStation - Boolean true if the address is a packstation. Default false.
If the address is a packstation street is the post number and number is the station number of the packstation. Default = false
lastname - String! The last name of the customer
number - String! The street number for the address
This is the station number for a packstation.
phone - String The phone number
postcode - String! The postal code of the address
salutation - String The salutation of the customer
street - String! The street name of the address
This is the post number (the customer number at DHL) for a packstation.
title - String The title of the customer
Example
{
  "additions": ["xyz789"],
  "attributes": {},
  "city": "xyz789",
  "company": "abc123",
  "country": "abc123",
  "email": "abc123",
  "firstname": "xyz789",
  "isShop": false,
  "isStation": true,
  "lastname": "xyz789",
  "number": "abc123",
  "phone": "xyz789",
  "postcode": "abc123",
  "salutation": "abc123",
  "street": "xyz789",
  "title": "abc123"
}

AmountBenefit

Description

Benefit of an absolute discount

Fields
Field Name Description
discount - Money The discount amount
image - Image The image of the benefit maintained in the back office
title - String The title of the benefit maintained in the back office
Example
{
  "discount": Money,
  "image": Image,
  "title": "abc123"
}

ArticleType

Description

Type of ArticleLink

Values
Enum Value Description

ITEM

Article is an item

PRODUCT

Article is a product

UNKNOWN

Article can be product or item
Example
"ITEM"

Asset

Types
Union Types

Document

Image

Video

Example
Document

AttainableInfo

Description

The information as to whether a voucher could be redeemed successfully or why not

Fields
Field Name Description
attainable - Boolean! true if the applied voucher is valid and applicable, but the cart still needs to be updated to meet the promotion criteria(s)
customerIdentifier - String The customer identifier if the voucher is a personal voucher
failureDescriptions - [String!]! The description(s) of the failure reason(s)
promotion - Promotion promotion details of the applied voucher
successful - Boolean! true if the voucher was applied successfully
voucherCode - String The code of the applied voucher
voucherName - String The name of the applied voucher
Example
{
  "attainable": true,
  "customerIdentifier": "abc123",
  "failureDescriptions": ["xyz789"],
  "promotion": Promotion,
  "successful": true,
  "voucherCode": "xyz789",
  "voucherName": "abc123"
}

AttributeOperation

Description

The possible operations on cart related attributes

As long as there are no unions of input types, we need to define inputs that behave like unions. Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
addAttribute - AddAttribute Adds an attribute to the cart
removeAttribute - RemoveAttribute Removes an attribute from cart
Example
{
  "addAttribute": AddAttribute,
  "removeAttribute": RemoveAttribute
}

Availability

Description

Availability of an item

Fields
Field Name Description
availabilityText - String Additional information (e.g. 'coming soon')
available - Boolean! true if item is available
maxQuantity - Int! Maximum quantity available
minQuantity - Int! Minimum quantity available (usually 1)
Example
{
  "availabilityText": "abc123",
  "available": false,
  "maxQuantity": 123,
  "minQuantity": 123
}

Badge

Description

A label for a product (e.g. 'new' or 'sale') to be displayed on the product detail page or product list

Fields
Field Name Description
name - String! Name of the badge
type - String! Type of the badge e.g. 'new' or 'sale'
Example
{
  "name": "abc123",
  "type": "abc123"
}

BaseAttribute

Description

Standard item attribute

Fields
Field Name Description
displayName - String! The display name of this attribute (e.g. 'color')
If not defined, this is an empty string.
displayValue - String! The value of this attribute (e.g. 'green')
name - String! The name of this attribute (e.g. 'import:color') Deprecated, this will be deleted without replacement in the future. No longer supported
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
values - [BaseValue]! List of values of this attribute
If there is only one value, it is the same as displayValue (including visualizing images).
Example
{
  "displayName": "abc123",
  "displayValue": "xyz789",
  "name": "xyz789",
  "sequenceNo": 123,
  "values": [BaseValue]
}

BaseFeature

Description

Standard product feature

Fields
Field Name Description
displayName - String! The display name of this feature
If not defined, this is an empty string.
images - [Image]! List of images to visualize feature
name - String! The name of this feature
Deprecated, this will be deleted without replacement in the future. No longer supported
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
value - String! The value of this feature
values - [BaseValue]! List of values of this attribute
If there is only one value, it is the same as value and images.
Example
{
  "displayName": "abc123",
  "images": [Image],
  "name": "xyz789",
  "sequenceNo": 987,
  "value": "abc123",
  "values": [BaseValue]
}

BaseValue

Description

A product/item attribute value

Fields
Field Name Description
images - [Image]! List of images to visualize this attribute value
value - String! The value (e.g. '10')
Example
{
  "images": [Image],
  "value": "xyz789"
}

Benefit

Description

The base type of a benefit

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "title": "abc123"
}

BigDecimal

Description

An arbitrary precision signed decimal

Example
BigDecimal

BillingAddress

Description

The billing address of the customer

Fields
Field Name Description
additions - [String]! The address additions
attributes - JSON

Additional attributes as JSON
Example:

{
  "attribute1": "value1",
  "attribute2": {
    "test": 157
  },
  "attribute3": 5.90
}
city - String! The city specified for this address
company - String The company specified for the address
country - Country! The country code and label for this address
email - String The email
firstname - String! The first name of the customer
id - ID ID of the address
lastname - String! The last name of the customer
notes - String Notes accompanying the order
number - String! The street number for this address
phone - String The phone number
postcode - String! The postal code of this address
salutation - Salutation The salutation of the customer
street - String! The street name of the address
title - String The title of the customer
Example
{
  "additions": ["abc123"],
  "attributes": {},
  "city": "abc123",
  "company": "xyz789",
  "country": Country,
  "email": "abc123",
  "firstname": "xyz789",
  "id": "4",
  "lastname": "abc123",
  "notes": "xyz789",
  "number": "xyz789",
  "phone": "xyz789",
  "postcode": "xyz789",
  "salutation": Salutation,
  "street": "xyz789",
  "title": "xyz789"
}

Boolean

Description

The Boolean scalar type represents true or false.

BooleanAttribute

Description

Backend type 'Boolean'

Fields
Field Name Description
bool - Boolean! The value of this attribute
name - String! The name of this attribute
Example
{"bool": true, "name": "xyz789"}

Brand

Description

A product brand

Fields
Field Name Description
id - ID! The ID of this brand
image - Image The image of this brand
link - Link! Link to this brand
name - String! The name of this brand (e.g. 'Nike' or 'Toshiba')
parameters - [ContentAttribute]! Additional shop specific parameters of this brand
Such a parameter can be, for example, the SEO text for a brand. There can be different types of parameters, from simple text to a complex teaser. By default, the brand parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#brandParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the backend

productCount - Int! Total number of valid products of this brand
products - [Product]! Valid products of this brand
Arguments
paging - Paging!

Paging to list product
Default: Paging with limit 100 and offset 0

topsellers - ProductRecommendations! Top selling products of this brand
By default, the top sellers are disabled and need to be enabled in the backend (see ShopApiConfigurer#recommendationsWhitelist and RecommendationType#BRAND_TOPSELLER).
Arguments
includingReducedProducts - Boolean!

If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed
Default: true

paging - RecommendationPaging!

Paging to list recommended products
Default: Paging with limit 100 and offset 0

Example
{
  "id": 4,
  "image": Image,
  "link": Link,
  "name": "xyz789",
  "parameters": [ContentAttribute],
  "productCount": 987,
  "products": [Product],
  "topsellers": ProductRecommendations
}

BrandListAttribute

Description

Backend type 'BrandList' which is a list of product brands

Fields
Field Name Description
brands - [Brand]! List of product brands
name - String! The name of this attribute
Example
{
  "brands": [Brand],
  "name": "xyz789"
}

BrandListEntry

Description

A product brand including link that is maintained in the back office

Fields
Field Name Description
brand - Brand! The product brand
link - Link The link to the brand as maintained in the back office
Example
{"brand": Brand, "link": Link}

BrandRecommendations

Description

Result type for brand recommendations

Fields
Field Name Description
brands - [Brand]! List of recommended brands
totalCount - Int! Total count of recommended brands
Example
{"brands": [Brand], "totalCount": 123}

BrandSuggest

Description

Brand suggestion(s) (e.g. 'Adidas Originals' for 'orig')

Fields
Field Name Description
brands - [Brand]! Suggested brands
Arguments
limit - Int!

Limits the number of brands that were suggested because the same search term was indexed for all of those brands
For example, if there are two brands with the same name 'Platinum', this list will contain those two brands. But you may want to avoid duplicate brand names in the list, then this list can be limited to one entry, which is the default.
Default: 1

match - String! Brand string that matches on query string (e.g. 'Adidas Originals' for 'orig')
Example
{
  "brands": [Brand],
  "match": "xyz789"
}

BrandsTeaser

Description

A teaser with a list of product brands This teaser type is activated by default.

Fields
Field Name Description
additionalBrands - [BrandListEntry]! A list of additional brands
headline - String The headline of this teaser
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
topBrands - [BrandListEntry]! The List of top brands
Example
{
  "additionalBrands": [BrandListEntry],
  "headline": "abc123",
  "meta": TeaserMeta,
  "name": "xyz789",
  "topBrands": [BrandListEntry]
}

Cart

Description

A complete cart of a user

Fields
Field Name Description
active - Boolean!

true if this cart is active

This is required if more than one cart is used. Only one cart can be active.

attribute - Object Cart related attribute
Arguments
attributeName - String!

Name of the attribute

attributes - Object Cart related attributes
availableShippingMethods - [ShippingMethod]! All available shipping methods
billingAddress - BillingAddress The billing address for the order
createdAt - DateTime! Creation date of this cart
editable - Boolean!

true if this cart is editable

A cart can be edited as long as no payment is authorized or captured.

guestId - String

The ID of the guest user

This ID is required for a guest checkout (usually the email address).

id - ID! The ID of this cart
isDefault - Boolean!

true if this cart is the default cart

This is required if more than one cart is used. Only one cart can be default.

name - String! The name of this cart
selectedPaymentMethod - PaymentMethod The selected payment method
selectedShippingMethod - ShippingMethod The selected shipping method
shared - Boolean! true if this cart as shared
shippingAddresses - [ShippingAddress]!

The shipping address for the order

This list contains one or no shipping address.

details - CartDetails! The cart details like cart positions, used voucher, total amount
Example
{
  "active": false,
  "attribute": Object,
  "attributes": Object,
  "availableShippingMethods": [ShippingMethod],
  "billingAddress": BillingAddress,
  "createdAt": "2007-12-03T10:15:30Z",
  "editable": true,
  "guestId": "xyz789",
  "id": "4",
  "isDefault": true,
  "name": "xyz789",
  "selectedPaymentMethod": PaymentMethod,
  "selectedShippingMethod": ShippingMethod,
  "shared": false,
  "shippingAddresses": [ShippingAddress],
  "details": CartDetails
}

CartDetails

Description

The detailed information of a cart

Fields
Field Name Description
articleCount - Int! The total number of items in this cart
attainableInfos - [AttainableInfo]! Attainable information about promotions and vouchers
deliveryInfo - DeliveryInfo Detailed information about delivery
discountInfo - CartDiscount Detailed information about the cart discount
discountWithoutCombinable - Money Cart based non-combinable promotion discount (see discountWithoutCombinable of CartDiscount)
freeShippingInfo - FreeShippingInfo Detailed information about free shipping promotion
informativeBenefits - [InformativeBenefitInfo]! Detailed information about informative benefits
positionCount - Int! The number of positions in this cart
positions - [CartEntry]! The cart positions
promoItems - [PromoItem]! Applicable promotion items
promotionsSaving - Money The savings related to promotions
This does not include savings related to FreeItemsInfo, SpecialPriceInfo, FreeAddonsInfo or FreeShippingInfo. This includes savings related to cart, "Take X and Pay Y", AmountBenefit and PercentBenefit.
subtotal - Money The subtotal amount of this cart (sum of totalDiscount of all CartEntrys)
total - Money The total amount of this cart including shipping costs and additional fees
Typically, the total amount can be calculated: total = subtotal + shipping costs + additional fees - additional savings without a voucher
totalSavings - Money The total savings of the cart: totalSavings = promotions saving + (strike out price - current price) of each item in the cart
voucherCodeStatus - VoucherCodeStatus Status information about the used voucher code
voucherLessSavings - Money The total amount saved as a result of promotions, excluding voucher promotions
This includes FreeItemsInfo, FreeAddonsInfo, FreeShippingInfo, TakeAndPayBenefit, AmountBenefit and PercentBenefit. This does not include FreeShippingInfo.
voucherSavings - Money The total amount saved through vouchers and promotions
This includes FreeItemsInfo, FreeAddonsInfo, TakeAndPayBenefit, AmountBenefit and PercentBenefit. This does not include FreeShippingInfo.
vouchers - [String!]! The redeemed vouchers of this cart
Example
{
  "articleCount": 123,
  "attainableInfos": [AttainableInfo],
  "deliveryInfo": DeliveryInfo,
  "discountInfo": CartDiscount,
  "discountWithoutCombinable": Money,
  "freeShippingInfo": FreeShippingInfo,
  "informativeBenefits": [InformativeBenefitInfo],
  "positionCount": 123,
  "positions": [CartEntry],
  "promoItems": [FreeAddonsInfo],
  "promotionsSaving": Money,
  "subtotal": Money,
  "total": Money,
  "totalSavings": Money,
  "voucherCodeStatus": "ATTAINABLE",
  "voucherLessSavings": Money,
  "voucherSavings": Money,
  "vouchers": ["abc123"]
}

CartDiscount

Description

Detailed information about cart related discount which is used in CartDetails
Cart with multiple cart promotions:
If the cart is allowed to have combinable (e.g. 10 EUR OFF of total basket amount) and non-combinable promotions (e.g. 15 EUR OFF of total basket amount) then discount = 25 EUR and discountWithoutCombinable = 15 EUR. However, only the promotion with the higher benefit from the customer's point of view is applied.

Fields
Field Name Description
capped - Boolean! true if the discount is capped
discount - Money The total discount amount for combinable and non-combinable promotions (for amount and percent based)
discountPercentage - BigDecimal The discount percentage only when discount benefit is percentage (e.g. % of old price or % of current price)
discountWithoutCombinable - Money The total discount amount for non-combinable promotions (for amount and percent based)
promotionDescription - String The description of the related promotion
promotionName - String The name of the related promotion
Example
{
  "capped": true,
  "discount": Money,
  "discountPercentage": BigDecimal,
  "discountWithoutCombinable": Money,
  "promotionDescription": "xyz789",
  "promotionName": "abc123"
}

CartEntry

Description

A complete cart position

Fields
Field Name Description
details - Item The item of this position
discountAmount - Money The discount amount of the item if the position has an AmountBenefit (see Discount)
discountInfo - Discount Detailed discount information of the position
discountPercentage - BigDecimal The discount percentage of the item if the position has a PercentBenefit
id - String! The ID of this position
Needed for mutations (see PositionOperation)
promotion - Promotion The promotion to which the position relates
quantity - Int! The quantity of this position
totalCurrentPrice - Money The current total price of this position without any promotions: [totalCurrentPrice = itemPrice x quantity]
totalDiscount - Money The total discount on this position
totalOldPrice - Money The total strike price of this position: total strike price = item strike price x quantity
totalPositionPrice - Money The final price of this position including applied promotions (see totalPrice of Discount)
This amount can be calculated: totalPositionPrice = totalCurrentPrice - totalDiscount If this position is a FreeItemBenefit totalPositionPrice is 0.
voucher - String The voucher code to which the position relates
Example
{
  "details": Item,
  "discountAmount": Money,
  "discountInfo": Discount,
  "discountPercentage": BigDecimal,
  "id": "xyz789",
  "promotion": Promotion,
  "quantity": 123,
  "totalCurrentPrice": Money,
  "totalDiscount": Money,
  "totalOldPrice": Money,
  "totalPositionPrice": Money,
  "voucher": "xyz789"
}

CartToWishlistProblem

Description

Problem when moving all positions from a cart to a wishlist

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "xyz789"}

CartToWishlistProblems

Description

An aggregation of problems occurred when moving all positions from a cart to a wishlist

Fields
Field Name Description
problems - [CartToWishlistProblem] List of problems encountered
Example
{"problems": [CartToWishlistProblem]}

CartToWishlistResult

Description

Result type moving positions from a cart to a wishlist

Example
CartToWishlistProblems

CartToWishlistSuccess

Description

Type for successfully moving positions from a cart to a wishlist

Fields
Field Name Description
wishlist - Wishlist! The updated wishlist
Example
{"wishlist": Wishlist}

Category

Description

A product category

Fields
Field Name Description
ancestors - [Category]! List of ancestor categories of this category
Arguments
order - SortOrder!

The categories are sorted from top-level category to parent category, this sorting can be reversed here Default: ascending (sorted from top-level category to parent category)

bottomTeaserInsertion - TeaserAttribute Teaser to be displayed below the product list
children - [Category]! List of child categories of this category
Arguments
hidden - CategoryHiddenStatus

Parameter to exclude categories in navigations (main, left or after search navigation)
Default: all valid categories are returned

order - SortOrder!

The categories are sorted as defined in the back office, this sorting can be reversed here
Default: ascending (sorted as defined in the back office)

id - ID! The ID of this category
idsDown - String! The category Ids from root to actual category seperated by -
Is useful for left navigation to find out if categories are inside active path
isHiddenFor - Boolean! Backoffice Hidden Category Parameter Type - if enabled the Category is hidden dependent on where it is used
Arguments
param - CategoryHiddenStatus!

Type of HiddenParameter

link - Link! Link to this category
metaTagDescription - String The meta tag description for this category page
Deprecated, use seo instead. No longer supported
metaTagRobots - String The meta tag robots for this category page
Deprecated, use seo instead. No longer supported
metaTagTitle - String The meta tag title for this category page
Deprecated, use seo instead. No longer supported
name - String! The name of this category (e.g. 'Women' or 'Shoes')
navigationFlyout - Image The navigation flyout for this category
parameters - [ContentAttribute]! Additional shop specific parameters of this category
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the category parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#categoryParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the backend

parent - Category The parent category of this category, or null if this category is a top-level category
products - SearchResult List valid products of this category (it is possible for a category landing page to have no search result)
By default this triggers the CategoryFilterEvent. It is therefore not necessary to trigger this event explicitly in the frontend. You can deactivate this tracking in the ShopApiConfigurer by setting enableSearchTracking to false.
Please note that a search is being executed here. A search is a comparatively expensive operation. In order to obtain the number of products within a subcategory (e.g. to display navigation), the category tree of the ProductSearchResult (field: selectedCategory) should be used.
Arguments
filter - CategorySearchFilter!

Filter to select products within this category
Default: filter without any restrictions

paging - SearchPaging!

Paging and sorting to list the products
Default: Paging with limit as defined in back office or 100 and offset 0

raster - Raster The raster maintained in the back office for this category, by default no product list is then provided
It is possible to enable the product list in the backend (see SearchProvider#allowFetchChildren).
recommendations - CategoryRecommendations! Similar/recommended categories to this category
Arguments
paging - RecommendationPaging!

Paging to list recommended categories
Default: Paging with limit 100 and offset 0

redirect - ResolvedLink If this property is set, the category might be invalid for some reason and a redirect is required. There is backend implementation required to fully support this feature with custom logic. This might be the reason if a category has no products anymore and should be redirected to its parent category like: /women/pants/summer-pants --> /women/pants/ because there are no summer pants in the winter collection
seo - Seo! SEO information of this category
seoBoxText - String HTML formatted SEO box text for this category page
Deprecated, use seo instead. No longer supported
seoHeadline - String SEO headline text for this category page
seoThumbnail - Image SEO thumbnail for this category page
Deprecated, use seo instead. No longer supported
teaserInsertions - [TeaserAttribute]! 24 teasers to be displayed within the product list
The returned list may contain null if no teaser is maintained for a position.
topTeaserInsertion - TeaserAttribute Teaser to be displayed above the product list
topsellers - ProductRecommendations! Top selling products of this category
By default, the top sellers are disabled and need to be enabled in the backend (see ShopApiConfigurer#recommendationsWhitelist and RecommendationType#CATEGORY_TOPSELLER).
Arguments
includingReducedProducts - Boolean!

If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed
Default: true

paging - RecommendationPaging!

Paging to list recommended products
Default: Paging with limit 100 and offset 0

Example
{
  "ancestors": [Category],
  "bottomTeaserInsertion": TeaserAttribute,
  "children": [Category],
  "id": "4",
  "idsDown": "abc123",
  "isHiddenFor": true,
  "link": Link,
  "metaTagDescription": "abc123",
  "metaTagRobots": "abc123",
  "metaTagTitle": "abc123",
  "name": "xyz789",
  "navigationFlyout": Image,
  "parameters": [ContentAttribute],
  "parent": Category,
  "products": PageSearchResult,
  "raster": Raster,
  "recommendations": CategoryRecommendations,
  "redirect": ResolvedLink,
  "seo": Seo,
  "seoBoxText": "xyz789",
  "seoHeadline": "xyz789",
  "seoThumbnail": Image,
  "teaserInsertions": [TeaserAttribute],
  "topTeaserInsertion": TeaserAttribute,
  "topsellers": ProductRecommendations
}

CategoryAttribute

Description

Backend type 'Category' which is a product category

Fields
Field Name Description
name - String! The name of this attribute
wrapper - CategoryWrapper The category with a name maintained in the back office
Example
{
  "name": "abc123",
  "wrapper": CategoryWrapper
}

CategoryFilterEvent

Description

Category filter event

Fields
Input Field Description
categoryId - ID! The category ID
filters - [EnumFilterInput!]! List of filters used by the user (except range/price filters)
Example
{"categoryId": 4, "filters": [EnumFilterInput]}

CategoryHiddenStatus

Description

Category visibility related to the context in which categories should be displayed

Values
Enum Value Description

AFTER_SEARCH_NAVIGATION

The category is not displayed in after search navigation

LEFT_NAVIGATION

The category is not displayed in left navigation

TOP_NAVIGATION

The category is not displayed in the main navigation
Example
"AFTER_SEARCH_NAVIGATION"

CategoryLandingPageViewEvent

Description

Category landing page view Event

Fields
Input Field Description
categoryId - ID! The category ID
url - String! The relative url of the category
Example
{
  "categoryId": "4",
  "url": "abc123"
}

CategoryListAttribute

Description

Backend types 'CategoryList', 'NamedCategoryList' and 'CategorySelectionList' which are lists of product categories

Fields
Field Name Description
name - String! The name of this attribute
wrappers - [CategoryWrapper]! List of categories with names maintained in the back office
Example
{
  "name": "abc123",
  "wrappers": [CategoryWrapper]
}

CategoryProductListViewEvent

Description

Category product list event

Fields
Input Field Description
categoryId - ID! The category ID
currentPage - Int! Index of the current page of the product list (starting with 0)
lastPage - Int! Index of the last page of the product list (starting with 0)
url - String! The relative url of the category
Example
{
  "categoryId": 4,
  "currentPage": 987,
  "lastPage": 123,
  "url": "abc123"
}

CategoryRecommendations

Description

Result type for category recommendations

Fields
Field Name Description
categories - [Category]! List of recommended categories
totalCount - Int! Total count of recommended categories
Example
{"categories": [Category], "totalCount": 123}

CategorySearchFilter

Description

Filter to select products within category

Fields
Input Field Description
byUser - Boolean! If set to true, the product list was requested by a user (e.g. when viewing a category page)
For example, this parameter should be set to false if this product list is used to render a teaser.
Default: true. Default = true
enumFilters - [EnumFilterInput!]! Specifies filters that operate on discrete values and computes an intersection of all specified filters
The available filters can be found by execute a search without any filter set (see field filters in ProductSearchResult).
Default: no restrictions. Default = []
ignoreMaintainedContent - Boolean! If set to true, a product list will be returned even though content is maintained for this category
Default: false. Default = false
rangeFilters - [RangeFilterInput!]! Specifies filters that operate on range of numerical values and computes an intersection of all specified filters
The available filters can be found by execute a search without any filter set (see field filters in ProductSearchResult).
Default: no restrictions. Default = []
Example
{
  "byUser": true,
  "enumFilters": [EnumFilterInput],
  "ignoreMaintainedContent": true,
  "rangeFilters": [RangeFilterInput]
}

CategorySearchSuggest

Description

Search term suggestion within a top-level category (e.g. 'chair in Furniture' for 'chai')

Fields
Field Name Description
category - Category! Top-level category
searchTerm - String! Suggested search term (e.g. 'chair')
totalCount - Int! Number of search hits for search term within category
Example
{
  "category": Category,
  "searchTerm": "xyz789",
  "totalCount": 987
}

CategorySuggest

Description

Category suggestion(s) (e.g. 'Smart Home' for 'hom')

Fields
Field Name Description
categories - [Category]! Suggested categories
Arguments
limit - Int!

Limits the number of categories that were suggested because the same search term was indexed for all of those categories
For example, if there are two categories with the same name 'Women', this list will contain those two categories. But you may want to avoid duplicate category names in the list, then this list can be limited to one entry, which is the default.
Default: 1

match - String! Category string that matches on query string (e.g. 'Smart Home' for 'hom')
Example
{
  "categories": [Category],
  "match": "abc123"
}

CategoryWrapper

Description

A product category with a name maintained in the back office

Fields
Field Name Description
category - Category The product category
name - String The name of this category (may differ from name of Category)
Example
{
  "category": Category,
  "name": "abc123"
}

CheckoutEvent

Description

Checkout step event

Fields
Input Field Description
index - Int! Index of the checkout step (starting with 0)
The steps in the checkout process depend on the shop and usually begin with the shopping cart.
option - String! Additional shop specific information
Default: empty string. Default = ""
orderLines - [OrderLineInput!]! All order lines of the current cart
step - String! The name of checkout step (e.g. 'summary')
The names of the checkout steps are not predefined, but should remain constant in every shop and should not be changed if possible.
Example
{
  "index": 987,
  "option": "xyz789",
  "orderLines": [OrderLineInput],
  "step": "xyz789"
}

ColorAttribute

Description

Item variation attribute that contains color information

Fields
Field Name Description
cssColorCode - String CSS color code that can be used to visualize the color attribute
displayName - String! The display name of this attribute (e.g. 'color')
If not defined, this is an empty string.
displayValue - String! The value of this attribute (e.g. 'green')
name - String! The name of this attribute (e.g. 'import:color')
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
Example
{
  "cssColorCode": "xyz789",
  "displayName": "xyz789",
  "displayValue": "xyz789",
  "name": "abc123",
  "sequenceNo": 987
}

ContentAttribute

Description

Base type for a data structure containing either a category, global, marker, or raster element parameter as well as a teaser with all its fields
This is used to get parameters and teasers in a generic way, which is disabled by default (see ShopApiConfigurer how to enable generic parameters and teasers).

Fields
Field Name Description
name - String! The name of this attribute set in the backend
Usually there is no reason to display this name in the frontend, except for tracking of teasers.
Example
{"name": "abc123"}

ContentSearchResult

Description

The result of the content search

Fields
Field Name Description
entries - [ContentSearchResultEntry]! List of content search hits
totalCount - Int! Total number of content search hits
Example
{"entries": [ContentSearchResultEntry], "totalCount": 123}

ContentSearchResultEntry

Description

The specific result entry of the content search

Fields
Field Name Description
fullText - String The long text of the content search result entry.
title - String The title of the content search result entry.
url - String The url/link of the content search result entry.
Example
{
  "fullText": "xyz789",
  "title": "abc123",
  "url": "abc123"
}

ContentTreePage

Description

Page maintained under 'Content trees' in the back office, such as imprint
These pages are structured hierarchically.
A content tree page is valid if content is maintained on it. This behavior can be changed by implementing a shop specific PageValidator.

Fields
Field Name Description
ancestors - [ContentTreePage]! List of ancestor pages of this content tree page
Any page that is not valid is not part of the result list.
Arguments
order - SortOrder!

The content tree pages are sorted from top-level page to parent page, this sorting can be reversed here
Default: ascending (sorted from top-level page to parent page)

children - [ContentTreePage]! List of child content tree pages of this page
Any page that is not valid is not part of the result list.
Arguments
order - SortOrder!

The content tree pages are sorted as defined in the back office, this sorting can be reversed here
Default: ascending (sorted as defined in the back office)

link - Link! Link to this content tree page
metaTagDescription - String The meta tag description for this page
Deprecated, use seo instead. No longer supported
metaTagRobots - String The meta tag robots for this page
Deprecated, use seo instead. No longer supported
metaTagTitle - String The meta tag title for this page
Deprecated, use seo instead. No longer supported
name - String! Name of this content tree page
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the backend

parent - ContentTreePage The parent page of this content tree page
If the parent page is invalid, null is returned.
raster - Raster Raster of this page including all teasers
root - ContentTreePage The top-level page of this content tree page
If the top-level page is invalid, null is returned.
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page
Deprecated, use seo instead. No longer supported
seoThumbnail - Image SEO thumbnail for this page
Deprecated, use seo instead. No longer supported
Example
{
  "ancestors": [ContentTreePage],
  "children": [ContentTreePage],
  "link": Link,
  "metaTagDescription": "xyz789",
  "metaTagRobots": "abc123",
  "metaTagTitle": "abc123",
  "name": "xyz789",
  "parameters": [ContentAttribute],
  "parent": ContentTreePage,
  "raster": Raster,
  "root": ContentTreePage,
  "seo": Seo,
  "seoBoxText": "abc123",
  "seoThumbnail": Image
}

ContentViewEvent

Description

Content view event

Fields
Input Field Description
contentId - ID linkId of corresponding Link of the page to be tracked
url - String! The relative url of the page to be tracked
Example
{"contentId": 4, "url": "abc123"}

Country

Description

A country

Fields
Field Name Description
code - String! The ISO 3166-1 code of this country
label - String! The display name of this country
Example
{
  "code": "abc123",
  "label": "abc123"
}

CreatePositionInput

Description

Operation to create a new position

Fields
Input Field Description
addAttributes - [AddAttribute!]! Adds attributes to the position. Default = []
setItemId - SetItemId! Sets the item ID of the position
updateIfExists - Boolean Indicates if an existing position should be updated. This means if you add the same item twice, the quantity of the existing position will be increased or a new position will be created. Default = true
updateQuantity - UpdateQuantity! Sets the quantity of the position
Example
{
  "addAttributes": [AddAttribute],
  "setItemId": SetItemId,
  "updateIfExists": true,
  "updateQuantity": UpdateQuantity
}

CreateReview

Description

Operation to create a review

Fields
Input Field Description
author - String! The Author of the review
email - String! The Email of the author
message - String! The Text of the review
productId - ID! The ID of the product that the review belongs to
rating - Int! The rating of the review
title - String! The Title of the review
Example
{
  "author": "xyz789",
  "email": "abc123",
  "message": "abc123",
  "productId": 4,
  "rating": 987,
  "title": "xyz789"
}

CreateWishlistInput

Description

Operations to create a wishlist

Fields
Input Field Description
setName - SetName Sets the name of the wishlist
Example
{"setName": SetName}

CreateWishlistProblem

Description

Problem when creating a new wishlist

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

CreateWishlistProblems

Description

An aggregation of problems occurred when creating a new wishlist

Fields
Field Name Description
problems - [CreateWishlistProblem]! List of problems encountered
Example
{"problems": [CreateWishlistProblem]}

CreateWishlistResult

Description

Result type creating a new wishlist

Example
CreateWishlistProblems

CreateWishlistSuccess

Description

Type for successfully creating a new wishlist

Fields
Field Name Description
wishlist - Wishlist! The newly created wishlist
Example
{"wishlist": Wishlist}

Customer

Description

A customer

Fields
Field Name Description
addressBook - AddressBook The address book of this customer
Arguments
paging - ShippingAddressPagingInput!

Paging to list the shipping addresses of the address book

birthDate - Date The birth date of this customer
company - String The company of this customer
customerIdentifier - String! The ID of this customer
firstname - String! The first name of this customer
lastname - String! The last name of this customer
orders - OrderListResult! The order history of this customer
Arguments
filter - OrderFilterInput!

Filter to select specific orders

paging - OrderPagingInput!

Paging and sorting to list the orders

phoneNumbers - [Phone] The list of phone numbers of this customer
salutation - String The salutation of this customer
title - String The title of this customer
username - String! The username of this customer (e.g. email address)
Example
{
  "addressBook": AddressBook,
  "birthDate": "2007-12-03",
  "company": "abc123",
  "customerIdentifier": "xyz789",
  "firstname": "xyz789",
  "lastname": "abc123",
  "orders": OrderListResult,
  "phoneNumbers": [Phone],
  "salutation": "xyz789",
  "title": "abc123",
  "username": "abc123"
}

Date

Description

An RFC-3339 compliant Full Date Scalar

Example
"2007-12-03"

DateAttribute

Description

Backend type 'Date'

Fields
Field Name Description
date - DateTime! The value of this attribute
name - String! The name of this attribute
Example
{
  "date": "2007-12-03T10:15:30Z",
  "name": "abc123"
}

DateTime

Description

A slightly refined version of RFC-3339 compliant DateTime Scalar

Example
"2007-12-03T10:15:30Z"

DeleteCartInput

Description

Information to delete a cart

Fields
Input Field Description
cartId - String! The ID of the cart to delete
Example
{"cartId": "abc123"}

DeletePhoneNo

Description

Operation to delete a phone no

Fields
Input Field Description
number - String! The phone no of the customer to be deleted
Example
{"number": "xyz789"}

DeletePosition

Description

Operation to delete a position

Fields
Input Field Description
positionId - ID! The ID of the position to delete
Example
{"positionId": "4"}

DeleteShippingAddress

Description

Operation to delete a shipping address

Fields
Input Field Description
addressId - String! The address ID to work with
Example
{"addressId": "xyz789"}

DeleteVoucher

Description

Operation to remove a voucher code

Fields
Input Field Description
code - String! The voucher code to remove
Example
{"code": "xyz789"}

DeleteWishlistInput

Description

Operation to delete a wishlist

Fields
Input Field Description
wishlistId - String! The ID of the wishlist to delete
Example
{"wishlistId": "abc123"}

DeliveryInfo

Description

Detailed delivery information

Fields
Field Name Description
deliveryCost - Money The delivery costs
deliveryTimeDescription - String Delivery time information
discountedDeliveryCost - Money The discounted delivery costs when the free shipping promotion is applied; otherwise zero
freeShippingPossible - Boolean true if free shipping is possible
shipper - String Name of the shipper
Example
{
  "deliveryCost": Money,
  "deliveryTimeDescription": "abc123",
  "discountedDeliveryCost": Money,
  "freeShippingPossible": true,
  "shipper": "xyz789"
}

Discount

Description

A position related discount (see CartEntry)

Fields
Field Name Description
capped - Boolean! true if the discount is capped
discount - Money The discount amount per item
For example discount = undiscountedPrice for free promotion items or for 'Take X and Pay Y' items.`
discountTotal - Money The discount amount per position: discountTotal = discount amount per item x discountedQuantity
discountedPrice - Money The item price with discount
This can be 0 for free promo items or for 'Take X and Pay Y' items.
discountedQuantity - Int! The number of discounted items
discountedTotalPrice - Money The total price for discounted items of this position: discountedTotalPrice = discountedPrice x discountedQuantity
effectivePercent - Int! The effective discount percentage
image - Image The image of this discount
previousTotalPrice - Money The total price without a promotion, calculated only if the position contains a price changing promotion: previousTotalPrice = undiscountedPrice x quantity
quantity - Int! The total number of all items of this position
title - String The display title of this discount
totalPrice - Money The final total price used to calculate cart subtotal amount: totalPrice= discountedTotalPrice + undiscountedTotalPrice
undiscountedPrice - Money The Item price without discount
undiscountedQuantity - Int! The number of items without a discount
undiscountedTotalPrice - Money The total price for non discounted items of this position: undiscountedTotalPrice = undiscountedPrice x undiscountedQuantity
Example
{
  "capped": false,
  "discount": Money,
  "discountTotal": Money,
  "discountedPrice": Money,
  "discountedQuantity": 987,
  "discountedTotalPrice": Money,
  "effectivePercent": 123,
  "image": Image,
  "previousTotalPrice": Money,
  "quantity": 123,
  "title": "abc123",
  "totalPrice": Money,
  "undiscountedPrice": Money,
  "undiscountedQuantity": 123,
  "undiscountedTotalPrice": Money
}

Document

Description

A document (e.g. a manual for a product)

Fields
Field Name Description
displayName - String The display name of this document
fileName - String! The file name of this document
url - String! Absolute URL of this document
Example
{
  "displayName": "xyz789",
  "fileName": "abc123",
  "url": "xyz789"
}

EmptyCartProblem

Description

Problem when emptying an existing cart

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

EmptyCartProblems

Description

An aggregation of problems occurred when emptying an existing cart

Fields
Field Name Description
problems - [EmptyCartProblem] List of problems encountered
Example
{"problems": [EmptyCartProblem]}

EmptyCartResult

Description

Result type when emptying a cart

Example
EmptyCartProblems

EmptyCartSuccess

Description

Type for successfully emptying a cart

Fields
Field Name Description
cart - Cart! The empty cart
Example
{"cart": Cart}

EmptyWishlistProblem

Description

An aggregation of problems occurred when emptying an existing wishlist

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "xyz789"}

EmptyWishlistProblems

Description

An aggregation of problems occurred when emptying a existing wishlist

Fields
Field Name Description
problems - [EmptyWishlistProblem] List of problems encountered
Example
{"problems": [EmptyWishlistProblem]}

EmptyWishlistResult

Description

Result type emptying a wishlist

Example
EmptyWishlistProblems

EmptyWishlistSuccess

Description

Type for successfully emptying a wishlist

Fields
Field Name Description
wishlist - Wishlist! The empty wishlist
Example
{"wishlist": Wishlist}

EnumFilter

Description

Default filter for discrete values

Fields
Field Name Description
displayName - String! The name of this filter to display
enumFilterValues - [EnumFilterValue]! Values of this filter which are used in EnumFilterInput as values
id - ID! Filter ID which is used in EnumFilterInput as id
Example
{
  "displayName": "xyz789",
  "enumFilterValues": [EnumFilterValue],
  "id": 4
}

EnumFilterInput

Description

Filter that operates on discrete values

Fields
Input Field Description
id - ID! Filter ID (e.g. 'color', 'brand', 'size')
values - [ID!]! List of discrete values to filter on (e.g. 'white', 'blue', 'red')
The union of the given values is calculated.
Example
{
  "id": "4",
  "values": ["4"]
}

EnumFilterValue

Description

Discrete value of an EnumFilter

Fields
Field Name Description
count - Int! Number of search hits when restricted to this value after all other filters have been applied
displayValue - String! The name of this filter value to display
id - ID! Filter value ID which is used in EnumFilterInput as values
selected - Boolean! true if used in current search
Example
{
  "count": 987,
  "displayValue": "xyz789",
  "id": 4,
  "selected": true
}

Filter

Description

Base type for search filters

Fields
Field Name Description
displayName - String! The name of this filter to display
id - ID! Filter ID which is used in EnumFilterInput and RangeFilterInput as id
Example
{"displayName": "xyz789", "id": 4}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

FooterTeaser

Description

A 'Footer' teaser
This teaser type is activated by default.

Fields
Field Name Description
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
placeholder - Image A placeholder image
tabs - [FooterTeaserTab]! A ordered list of FooterTeaserTabs
Example
{
  "meta": TeaserMeta,
  "name": "xyz789",
  "placeholder": Image,
  "tabs": [FooterTeaserTab]
}

FooterTeaserTab

Description

Single tab of a FooterTeaser

Fields
Field Name Description
headline - String The headline of this tab
links - [Link]! Link list of this tab
name - String The name of this tab
trackingInfo - String Additional Tracking information
Example
{
  "headline": "abc123",
  "links": [Link],
  "name": "xyz789",
  "trackingInfo": "abc123"
}

FreeAddonsInfo

Description

Information about free addons if a free addon benefit can be applied
It provides a list of the selectable/selected free addons and the related article.

Fields
Field Name Description
mainItem - Item! The item to which the free addons relate
max - Int! The maximum number of selectable items
promotion - Promotion The related promotion
promotionReference - ID! The promotion reference
selectableAddons - [Item]! List of items to choose from
selectedAddons - [Item]! List of items selected by the user
Example
{
  "mainItem": Item,
  "max": 123,
  "promotion": Promotion,
  "promotionReference": "4",
  "selectableAddons": [Item],
  "selectedAddons": [Item]
}

FreeItemBenefit

Description

Benefit of one or more free items

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
maxSelectable - Int! The maximum number of selectable free items
selectableItems - [Item]! List of free items to choose from
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "maxSelectable": 987,
  "selectableItems": [Item],
  "title": "xyz789"
}

FreeItemsInfo

Description

Information about free items if a free item benefit can be applied
It provides a list of selectable and selected free items.

Fields
Field Name Description
image - Image The image of the free items promotion
max - Int! The maximum number of selectable free items
promotion - Promotion The related promotion
promotionReference - ID! The promotion reference
selectableItems - [Item]! List of free items to choose from
selectableSkus - [String!]! List of SKUs of free items to choose from
selectedItems - [Item]! List of free items selected by the user
title - String The display title of the free items promotion
Example
{
  "image": Image,
  "max": 987,
  "promotion": Promotion,
  "promotionReference": "4",
  "selectableItems": [Item],
  "selectableSkus": ["abc123"],
  "selectedItems": [Item],
  "title": "xyz789"
}

FreeShippingBenefit

Description

A free shipping benefit

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "title": "abc123"
}

FreeShippingInfo

Description

Information about free shipping promotion

Fields
Field Name Description
free - Boolean! true if the shipping is free
image - Image The image of the promotion
promotion - Promotion The related promotion
title - String The display title of the promotion
voucher - String Related voucher code
Example
{
  "free": false,
  "image": Image,
  "promotion": Promotion,
  "title": "xyz789",
  "voucher": "abc123"
}

GenericTeaser

Description

A generic teaser, used when no specific TeaserAttribute is defined for a teaser
By default, the generic teasers are disabled and need to be enabled in the backend (see ShopApiConfigurer#allowGenericTeaser and ShopApiConfigurer#teaserAttributeBlacklist).

Fields
Field Name Description
attributes - [ContentAttribute]! List of attributes of this teaser (e.g. text fields, links or images)
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
tabsAttributes - [TabsAttribute]! List of tabs of this teaser
Example
{
  "attributes": [ContentAttribute],
  "meta": TeaserMeta,
  "name": "xyz789",
  "tabsAttributes": [TabsAttribute]
}

GlobalParameter

Description

A single Global parameter

Fields
Field Name Description
parameters - [ContentAttribute]! Values of the parameter
The name of the parameter is name of ContentAttribute
Arguments
paging - GlobalParameterPaging!

Paging and sorting to list the parameter values
Default: Paging with limit 100 and offset 0

type - String! Type of the parameter
Example
{
  "parameters": [ContentAttribute],
  "type": "xyz789"
}

GlobalParameterFilter

Description

Types to filter global parameters

Fields
Input Field Description
parameterNames - [String!]! Names of global parameter as defined in the backend
If empty, all values of the specified parameter type are returned.
Default: no restrictions. Default = []
parameterType - String! Name of type of global parameter as defined in the backend
Example
{
  "parameterNames": ["xyz789"],
  "parameterType": "abc123"
}

GlobalParameterPaging

Description

Limit and offset for a list of global parameters

Fields
Input Field Description
limit - Int! The number of global parameters per page
Default: 100. Default = 100
offset - Int! The starting position in the global parameters result list
Example: To show the entries with index 15 to 24, set offset to 15 and limit to 10.
Default: 0. Default = 0
order - SortOrder! The parameters are sorted in ascending order according to their name, this sorting can be reversed here
Default: ascending. Default = ASC
Example
{"limit": 123, "offset": 123, "order": "ASC"}

HeadlineTeaser

Description

A 'Headline' teaser
This teaser type is activated by default.

Fields
Field Name Description
headline - String The headline of this teaser
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
Example
{
  "headline": "abc123",
  "meta": TeaserMeta,
  "name": "xyz789"
}

Hreflang

Description

Information to build hreflang link

Fields
Field Name Description
language - String! Language of alternative version
url - String! URL of alternative version
Example
{
  "language": "abc123",
  "url": "abc123"
}

HtmlTeaser

Description

An HTML teaser
This teaser type is activated by default.

Fields
Field Name Description
html - String! HTML formatted content
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
Example
{
  "html": "xyz789",
  "meta": TeaserMeta,
  "name": "abc123"
}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Image

Description

An image in the shop (e.g. product images or assets from the back office)

Fields
Field Name Description
alt - String The alt text of this image, which can be set in the back office
How the alt text is set in the back office is contextual, e.g. there may be an alt text field in a teaser.
boUrl - String The image url if the image is maintained in the backoffice
fileName - String! The file name of this image
height - Int The height of this image in pixels, which is calculated when uploading the image in the back office
It is possible that this value is not set (e.g. for product images from the product data import).
imageRole - ImageRole Role of this image (e.g. Rear view image)
For backoffice images (e.g. in teasers) this is empty.
name - String The name of this image, which can be set in the back office
rank - Int! The position of the image within a list of images (the lower, the further up the list)
This value must be set explicitly (e.g. when importing a product) and is 0 by default.
title - String A title for this image, which can be set in the back office How the title is set in the back office is contextual, e.g. there may be an title field in a teaser.
url - String! URL of the image, which can be absolute or relative (how an URL is build is implemented in the backend of the shop, see IUrlGenerator)
width - Int The width of this image in pixels, which is calculated when uploading the image in the back office
It is possible that this value is not set (e.g. for product images from the product data import).
Example
{
  "alt": "abc123",
  "boUrl": "xyz789",
  "fileName": "xyz789",
  "height": 123,
  "imageRole": "CROPPED_IMAGE",
  "name": "xyz789",
  "rank": 123,
  "title": "abc123",
  "url": "abc123",
  "width": 123
}

ImageAttribute

Description

Backend type 'Image' which is a image maintained in the back office

Fields
Field Name Description
image - Image! The maintained image
name - String! The name of this attribute
Example
{
  "image": Image,
  "name": "abc123"
}

ImageLinkTeaser

Description

An image link teaser
This teaser type is activated by default.

Fields
Field Name Description
image - LinkedImage! A linked image
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
Example
{
  "image": LinkedImage,
  "meta": TeaserMeta,
  "name": "xyz789"
}

ImageListAttribute

Description

Backend type 'ImageList' which is a list of images maintained in the back office

Fields
Field Name Description
images - [Image]! List of maintained images
name - String! The name of this attribute
Example
{
  "images": [Image],
  "name": "abc123"
}

ImageRole

Description

Role of an image

Values
Enum Value Description

CROPPED_IMAGE

Cropped image

DETAIL_IMAGE

Detail image

MAIN_IMAGE

Main image

MANUFACTURER_IMAGE

Brand logo

PATTERN_IMAGE

Pattern image for variation selection

REARVIEW_IMAGE

Rear view image

ZOOM_IMAGE

Zoom image
Example
"CROPPED_IMAGE"

InformationEvent

Description

Information event

Fields
Input Field Description
name - String! The Payload (currently only 'evaluatesJavaScript' is used)
Default: 'evaluatesJavaScript'. Default = "evaluatesJavaScript"
Example
{"name": "abc123"}

InformativeBenefit

Description

An informative benefit

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
title - String The title of the benefit maintained in the back office
type - String Shop specific type of the benefit
Example
{
  "image": Image,
  "title": "xyz789",
  "type": "xyz789"
}

InformativeBenefitInfo

Description

Information about informative benefits

Fields
Field Name Description
image - Image The image of the promotion
promotion - Promotion The related promotion
title - String The display title of the promotion
type - String! The type of the informative benefit
Example
{
  "image": Image,
  "promotion": Promotion,
  "title": "xyz789",
  "type": "xyz789"
}

InsertionTeaser

Description

A insertion teaser
This teaser type is activated by default.

Fields
Field Name Description
backgroundColor - String The background color of teaser
headline - String The headline of this teaser
iconCss - String CSS class to display an icon image
link - Link The resource to which this teaser is linked
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
text - String The text of this teaser
Example
{
  "backgroundColor": "abc123",
  "headline": "xyz789",
  "iconCss": "abc123",
  "link": Link,
  "meta": TeaserMeta,
  "name": "abc123",
  "text": "abc123"
}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
123

InterestEvent

Description

User interest event (for example, if the user is interested in discounted items)

Fields
Input Field Description
name - String! Name of interest
value - String! Value of interest
Example
{
  "name": "xyz789",
  "value": "xyz789"
}

InvalidGuestIdProblem

Description

The entered GuestId is not a valid email address

Fields
Field Name Description
guestId - String The provided guest id
message - String!

The message to display

This is usually the message code for translation.

Example
{
  "guestId": "xyz789",
  "message": "abc123"
}

InvalidPaymentMethodProblem

Description

The selected payment method and the current cart are not compatible

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "xyz789"}

Item

Description

A shop item

Fields
Field Name Description
id - ID! The ID of this item
inBasket - Boolean! true if this item is in the basket at least once
onWishlist - Boolean! true if this item is on the wishlist at least once
additionalImages - [Image]! Additional Images of this item
Arguments
roles - [ImageRole!]!

Only Images of this ImageRoles are returned

assets - [Asset]! Assets of this item for display on the product detail page
availability - Availability! Availability of this item
badges - [Badge]! Item badges
color - ItemColor The detailed and/or searchable color of the item
Deprecated, use variations instead. No longer supported
documents - [Document]! Documents of this item for display on the product detail page
features - [ItemAttribute]! List of all item features
Item features are properties that are maintained on the item (e.g. length).
image - Image Image of this item for display on product lists
images - [Image!] The images of this item
itemDiscount - ItemDiscount Discounts that can be displayed early in the shop (e.g. on product lists or the product detail page)
link - Link! Link to this item
oldPrice - Money Strike price of this item
price - Money The current price of this item (promotion price or the default price if not found)
product - Product! The product to which the item belongs
recommendations - ItemRecommendations! Content based recommendations for the item
Arguments
paging - RecommendationPaging!

Paging to list recommended items
Default: Paging with limit 100 and offset 0

relations - [ProductRelations]! Lists of products or items related to this item (e.g. for product recommendations)
Arguments
paging - RelationsPaging!

Paging for relations
Paging is applied to all returned relations

type - String

Type of relations (if not set, all relations are returned)
Default: not set (all relations are returned)

rrpPrice - Money The recommended retail price of this item
seo - Seo! SEO information of this item
services - [ProductService]! List of additional product services
shortDescription - String Item short description
size - String The size of this item
Deprecated, use variations instead. No longer supported
sku - String! The SKU of this item
variations - [ItemAttribute]! Attributes that constitute product variations (e.g. 'color')
videos - [Video]! Videos of this item for display on the product detail page
Example
{
  "id": "4",
  "inBasket": true,
  "onWishlist": true,
  "additionalImages": [Image],
  "assets": [Document],
  "availability": Availability,
  "badges": [Badge],
  "color": ItemColor,
  "documents": [Document],
  "features": [ItemAttribute],
  "image": Image,
  "images": [Image],
  "itemDiscount": ItemDiscount,
  "link": Link,
  "oldPrice": Money,
  "price": Money,
  "product": Product,
  "recommendations": ItemRecommendations,
  "relations": [ProductRelations],
  "rrpPrice": Money,
  "seo": Seo,
  "services": [ProductService],
  "shortDescription": "abc123",
  "size": "xyz789",
  "sku": "abc123",
  "variations": [ItemAttribute],
  "videos": [Video]
}

ItemAttribute

Description

Item attribute that constitutes product variations like size or color

Fields
Field Name Description
displayName - String! The display name of this attribute (e.g. 'color')
If not defined, this is an empty string.
displayValue - String! The value of this attribute (e.g. 'green')
name - String! The name of this attribute (e.g. 'import:color') Deprecated, this will be deleted without replacement in the future. No longer supported
Possible Types
ItemAttribute Types

BaseAttribute

ColorAttribute

ValueWithUnitAttribute

Example
{
  "displayName": "xyz789",
  "displayValue": "xyz789",
  "name": "abc123"
}

ItemColor

Description

The detailed color of the item

Fields
Field Name Description
displayName - String! The display name of this color (e.g. 'fuchsia' or 'ivory')
searchColor - SearchColor The corresponding search color
Example
{
  "displayName": "abc123",
  "searchColor": SearchColor
}

ItemDiscount

Description

Discounts that are shown early in the shop (e.g. on a product list or a product detail page)

Fields
Field Name Description
discountAmount - Money Discount amount if discount is absolute
discountPercent - BigDecimal Percentage discount if discount is relative
promotionsSavings - Money! Savings compared to normal price
Example
{
  "discountAmount": Money,
  "discountPercent": BigDecimal,
  "promotionsSavings": Money
}

ItemRecommendations

Description

Result type for item recommendations

Fields
Field Name Description
items - [Item]! List of recommended items
totalCount - Int! Total count of recommended items
Example
{"items": [Item], "totalCount": 987}

ItemViewEvent

Description

Item view event

Fields
Input Field Description
categoryId - ID The ID of the category in whose context the product view was made
Such a category can be from whose product list the product was clicked or which was used as a criterion in a search.
itemId - ID! The item ID
Example
{"categoryId": 4, "itemId": "4"}

JSON

Description

A JSON scalar

Example
{}

LandingPage

Description

Page maintained under 'Landing Pages' in the back office
A landing page is valid if content is maintained on it. This behavior can be changed by implementing a shop specific PageValidator.

Fields
Field Name Description
link - Link! Link to this landing page
metaTagDescription - String The meta tag description for this page
Deprecated, use seo instead. No longer supported
metaTagRobots - String The meta tag robots for this page
Deprecated, use seo instead. No longer supported
metaTagTitle - String The meta tag title for this page
Deprecated, use seo instead. No longer supported
name - String! Name of this landing page
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the back office

raster - Raster Raster of this page including all teasers
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page
Deprecated, use seo instead. No longer supported
seoThumbnail - Image SEO thumbnail for this page
Deprecated, use seo instead. No longer supported
Example
{
  "link": Link,
  "metaTagDescription": "abc123",
  "metaTagRobots": "abc123",
  "metaTagTitle": "abc123",
  "name": "abc123",
  "parameters": [ContentAttribute],
  "raster": Raster,
  "seo": Seo,
  "seoBoxText": "abc123",
  "seoThumbnail": Image
}

LastSearchTerm

Description

A single representation of an executed search

Fields
Field Name Description
hits - Int! The number of hits for this search
searchDate - DateTime Time when the search was executed
searchTerm - String! The search term
Example
{
  "hits": 123,
  "searchDate": "2007-12-03T10:15:30Z",
  "searchTerm": "abc123"
}

LastSearchTerms

Description

A list of recently executed searches including the count

Fields
Field Name Description
count - Int! The number of searches the user recently executed
searchTerms - [LastSearchTerm]! The list of searches the user has recently executed
Example
{"count": 987, "searchTerms": [LastSearchTerm]}

LastSeenItem

Description

A single representation of a viewed item

Fields
Field Name Description
item - Item! The viewed item
viewDate - DateTime Time when the item was viewed
Example
{
  "item": Item,
  "viewDate": "2007-12-03T10:15:30Z"
}

LastSeenItems

Description

A list of recently viewed items including the count

Fields
Field Name Description
count - Int! The number of items the user lastly viewed
items - [LastSeenItem]! The list of items the user lastly viewed
Example
{"count": 123, "items": [LastSeenItem]}

LinkAttribute

Description

Backend type 'Link'

Fields
Field Name Description
link - Link! Link that can point to a variety of resources (e.g. an external link, a link to a category, to an article or a shop page)
name - String! The name of this attribute
Example
{
  "link": Link,
  "name": "abc123"
}

LinkInput

Description

Link input type that can be used to resolve different types of pages like maintained pages (e.g. homepage), landing pages, content tree pages (e.g. imprint)

Fields
Input Field Description
id - ID! The link ID (see linkId of Link)
type - LinkType! The link type (see linkType of Link)
Example
{"id": "4", "type": "ARTICLE"}

LinkListAttribute

Description

Backend type 'NamedLinkList' which is a list of links

Fields
Field Name Description
links - [Link]! List of links that can point to a variety of resources (e.g. an external link, a link to a category, to an article or a shop page)
name - String! The name of this attribute
Example
{
  "links": [Link],
  "name": "abc123"
}

LinkParameter

Description

A parameter tuple
These parameters can be link that can be specified in backoffice

Fields
Field Name Description
key - String! The name of this parameter
value - String The value of this parameter
Example
{
  "key": "abc123",
  "value": "abc123"
}

LinkType

Description

Parameter tuple of a Link that can be specified in the backoffice (e.g. as a tracking parameter)

Values
Enum Value Description

ARTICLE

Article link (link to a product or item) To build a LinkInputusearticleId` of ArticleLink as ID.

ASSET

Asset link
To build a LinkInput use assetId of AssetLink as ID.

BRAND

Brand link
To build a LinkInput use brandId of BrandLink as ID.

CATEGORY

Category link
To build a LinkInput use categoryId of CategoryPageLink as ID.

CONTENT_TREE_NODE

Content tree page link
To build a LinkInput use contentTreeId of ContentTreeLink as ID.

EXTERNAL

External link
To build a LinkInput use url of ExternalLink as ID.

ITEM

Article link of an item
To build a LinkInput use articleId (item ID) of ArticleLink as ID.

LANDING_PAGE

Landing page link
To build a LinkInput use landingPageId of LandingPageLink as ID.

LAYER

Layer link
To build a LinkInput use layerPath of LayerLink as ID.

PAGE

Page link (used on maintained pages such as the homepage)
To build a LinkInput use containerId of PageLink as ID.

PRODUCT

Article link of a product
To build a LinkInput use articleId (product ID) of ArticleLink as ID.

SEARCH_TERM

Search term link
To build a LinkInput use searchTerm of SearchTermLink as ID.

SEARCH_TERM_GROUP

Search term group link
To build a LinkInput use searchTerm of SearchTermGroupLink as ID.

SEO_TERM

SEO term link
To build a LinkInput use seoTerm of SeoTermLink as ID.

UNDEFINED

Undefined link type
Example
"ARTICLE"

LinkedBrandListAttribute

Description

Backend type 'LinkedBrandList', which is a list of product brands including links maintained in the back office

Fields
Field Name Description
linkedBrands - [BrandListEntry]! List of product brands including links
name - String! The name of this attribute
Example
{
  "linkedBrands": [BrandListEntry],
  "name": "xyz789"
}

LinkedImage

Description

A image with a link

Fields
Field Name Description
image - Image! The image
link - Link! The resource to which the image is linked
linkColor - String The link color
Example
{
  "image": Image,
  "link": Link,
  "linkColor": "abc123"
}

Long

Description

A scalar representing Java's java.lang.Long

Example
{}

MaintainedPage

Description

Page maintained under 'Maintained Pages' in the back office, such as homepage

Fields
Field Name Description
id - ID! The ID of this maintained page
metaTagDescription - String The meta tag description for this page
Deprecated, use seo instead. No longer supported
metaTagRobots - String The meta tag robots for this page
Deprecated, use seo instead. No longer supported
metaTagTitle - String The meta tag title for this page
Deprecated, use seo instead. No longer supported
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the back office

raster - Raster Raster of this page including all teasers
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page
Deprecated, use seo instead. No longer supported
seoThumbnail - Image SEO thumbnail for this page
Deprecated, use seo instead. No longer supported
Example
{
  "id": 4,
  "metaTagDescription": "xyz789",
  "metaTagRobots": "abc123",
  "metaTagTitle": "abc123",
  "parameters": [ContentAttribute],
  "raster": Raster,
  "seo": Seo,
  "seoBoxText": "abc123",
  "seoThumbnail": Image
}

MaintainedProductPage

Description

Page maintained under 'Maintained Product Pages' in the back office
It is possible to define a specific layout for a single product detail page or a list of product detail pages in the back office.

Fields
Field Name Description
link - Link! Link to this product page
metaTagDescription - String The meta tag description for this page No longer supported
metaTagRobots - String The meta tag robots for this page No longer supported
metaTagTitle - String The meta tag title for this page No longer supported
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the back office

raster - Raster Raster of this page including all teasers
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page No longer supported
seoThumbnail - Image SEO thumbnail for this page No longer supported
Example
{
  "link": Link,
  "metaTagDescription": "abc123",
  "metaTagRobots": "abc123",
  "metaTagTitle": "xyz789",
  "parameters": [ContentAttribute],
  "raster": Raster,
  "seo": Seo,
  "seoBoxText": "abc123",
  "seoThumbnail": Image
}

MergeCartInput

Description

Information to merge two carts

Fields
Input Field Description
currentCartId - String Current cart ID, which refers to the guest's cart before login, which is a cart with a guest ID
mergePositions - Boolean

Specifies how cart positions should be merged when the same item entry is present in both carts

If true, same item entries will be merged into a single entry and sum the quantities.

If false, then keep the item entries as is. Example:

If there is an item A with quantity 2 and 3 in previous cart and current cart respectively.

If set to true, a single entry with quantity 5 exists after the merge.

If set to false, two entries exist with quantity 2 and quantity 3 respectively after the merge.

Note: This is only relevant for the "COMBINE" merge strategy. Default = false

mergeStrategy - MergeStrategy! Merge strategy refers to how the current cart and previous cart should be merged
previousCartId - String ID of the previously persisted cart, which refers to the cart of the logged-in user
Example
{
  "currentCartId": "abc123",
  "mergePositions": false,
  "mergeStrategy": "COMBINE",
  "previousCartId": "abc123"
}

MergeCartProblem

Description

Problem when merging two existing carts

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

MergeCartProblems

Description

An aggregation of problems occurred when merging two existing carts

Fields
Field Name Description
problems - [MergeCartProblem] List of problems encountered
Example
{"problems": [MergeCartProblem]}

MergeCartResult

Description

Result type merging two carts

Example
MergeCartProblems

MergeCartSuccess

Description

Type for successfully merging two shopping carts

Fields
Field Name Description
cart - Cart! The merged cart.
Example
{"cart": Cart}

MergeStrategy

Description

ProductLists (either wishlist or cart) can be merged based on one of the below strategies

The "previous" productList is the previously persisted productList relating to the logged-in user.

The "current" productList is the user's productList before login.

When the "current" and "previous" productList IDs are the same, then

a) if the ID is not null, the "current" productList will be returned without modification

b) if the ID is null, the user's active or default productList is returned, if any, otherwise NoValidCartFoundException/NoValidWishlistFoundException is thrown

Assumption: A guest user can only have one cart and wishlist, which is default and active.

Values
Enum Value Description

COMBINE

Combines the "previous" and the "current" productList into the "previous" productList, which is returned, and deletes the "current" productList

If only the "previous" productList exists, the "previous" productList is returned.

If only the "current" productList exists, this cart is set as the "previous" productList and returned.

If the "current" productList and the "previous" productList do not exist, then it returns

a) active or default productList of the logged-in user, if any

b) NoValidCartFoundException/NoValidWishlistFoundException if the user has neither an active nor a default productList

c) null if the user has no productList

If both carts have the same item entry, the merge is done based on the mergePositions flag (see MergeInput).

KEEP_CURRENT

Deletes the "previous" productList and keeps the "current" productList and returns it

If the "current" productList does not exist, then it returns

a) active or default productList of the logged-in user, if any

b) NoValidCartFoundException/NoValidWishlistFoundException if the user has neither an active nor a default productList

c) null if the user has no productList

KEEP_PREVIOUS

Deletes the "current" productList and keeps the "previous" productList and returns it

If the "previous" productList does not exist, then it returns

a) active or default productList of the logged-in user, if any

b) NoValidCartFoundException/NoValidWishlistFoundException if the user has neither an active nor a default productList

c) null if the user has no productList

Example
"COMBINE"

MergeWishlistInput

Description

Information to merge two wishlists

Fields
Input Field Description
currentWishlistId - String Current Wishlist ID, which refers to the guest's wishlist before login, which is a wishlist with a guest ID
mergePositions - Boolean

Specifies how wishlist positions should be merged when the same item entry is present

If true, same item entries will be merged into a single entry and sum the quantities.

If false, then keep the item entries as is.

Example:

If there is an item A with quantity 2 and 3 in previous and current wishlist respectively.

If set to true, a single entry with quantity 5 exists after the merge.

If set to false, two entries exist with quantity 2 and quantity 3 respectively after the merge.

Note: This is only relevant for the "COMBINE" merge strategy. Default = true

mergeStrategy - MergeStrategy! Merge strategy refers to how the current wishlist and previous wishlist should be merged
previousWishlistId - String ID of the previously persisted wishlist, which refers to the wishlist of the logged-in user
Example
{
  "currentWishlistId": "abc123",
  "mergePositions": true,
  "mergeStrategy": "COMBINE",
  "previousWishlistId": "abc123"
}

MergeWishlistProblem

Description

Problem when merging two existing wishlists

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "xyz789"}

MergeWishlistProblems

Description

An aggregation of problems occurred when merging two existing wishlists

Fields
Field Name Description
problems - [MergeWishlistProblem] List of problems encountered
Example
{"problems": [MergeWishlistProblem]}

MergeWishlistResult

Description

Result type merging two wishlists

Example
MergeWishlistProblems

MergeWishlistSuccess

Description

Type for successfully merging two wishlists

Fields
Field Name Description
wishlist - Wishlist! The merged wishlist.
Example
{"wishlist": Wishlist}

MetaTag

Description

Single meta tag with of name and content

Fields
Field Name Description
content - String! Value of this tag (e.g. noindex)
name - String! Name of this tag (e.g. robots)
Example
{
  "content": "abc123",
  "name": "xyz789"
}

Money

Description

A monetary amount like '19.99 €'

Fields
Field Name Description
amount - BigDecimal! The amount as BigDecimal
currencyCode - String! The currency code compliant to ISO 4217
currencySymbol - String! The currency symbol like '€'
intAmount - Int! The amount as Int (e.g. 995 instead of 9.95)
precision - Int The precision of the amount
stringValue - String! The amount value as String
Example
{
  "amount": BigDecimal,
  "currencyCode": "xyz789",
  "currencySymbol": "abc123",
  "intAmount": 987,
  "precision": 987,
  "stringValue": "abc123"
}

NumberAttribute

Description

Backend type 'Number'

Fields
Field Name Description
name - String! The name of this attribute
number - Long! The value of this attribute
Example
{"name": "abc123", "number": {}}

Object

Description

An object scalar

Example
Object

Order

Description

An order

Fields
Field Name Description
billingAddress - OrderBillingAddress The billing address
discountInfo - OrderDiscountInfo Information on total discount amount and promotion details
orderDate - String! Order time
orderLines - [OrderItem]! All order lines
orderNumber - String! The order number
paymentInfos - [OrderPaymentInfo]! Payment details information
shippingAddresses - [OrderShippingAddress]! The shipping address
shippingInfo - OrderShippingInfo Detailed shipping information such as shipping cost, shipping method and tracking code
The tracking code of an order is empty. To get the tracking code, see OrderShippingInfo of each OrderItem.
status - String! Current state of this order
subTotal - Money! The subtotal amount of this order (see subtotal of CartDetails)
total - Money! Total invoice amount of this order
Example
{
  "billingAddress": OrderBillingAddress,
  "discountInfo": OrderDiscountInfo,
  "orderDate": "xyz789",
  "orderLines": [OrderItem],
  "orderNumber": "abc123",
  "paymentInfos": [OrderPaymentInfo],
  "shippingAddresses": [OrderShippingAddress],
  "shippingInfo": OrderShippingInfo,
  "status": "xyz789",
  "subTotal": Money,
  "total": Money
}

OrderAddressValidationProblem

Description

Problems if the Address Input has invalid fields

Fields
Field Name Description
message - String! The failure reason to display with field information
Example
{"message": "abc123"}

OrderBillingAddress

Description

A billing address

Fields
Field Name Description
addition - String The address additions
city - String! The city specified for this address
company - String The company specified for this address
country - String! The country code for this address
email - String The email
firstname - String! The first name of the customer
lastname - String! The last name of the customer
number - String! The street number for this address
phone - String The phone number
postcode - String! The postal code of this address
salutation - String! The salutation of the customer
street - String! The street name of this address
title - String The title of the customer
Example
{
  "addition": "xyz789",
  "city": "abc123",
  "company": "abc123",
  "country": "abc123",
  "email": "abc123",
  "firstname": "xyz789",
  "lastname": "abc123",
  "number": "abc123",
  "phone": "xyz789",
  "postcode": "abc123",
  "salutation": "xyz789",
  "street": "xyz789",
  "title": "abc123"
}

OrderDateRange

Description

A filter to select orders by a time period

Fields
Input Field Description
from - Date End date (inclusive)
to - Date Start date (inclusive)
Example
{
  "from": "2007-12-03",
  "to": "2007-12-03"
}

OrderDiscountInfo

Description

Information on total discount amount and promotion details

Fields
Field Name Description
promotions - [OrderPromotion]! Promotion related details like used code, name, description and type of promotion
totalAmount - Money! The total discount amount
Example
{
  "promotions": [OrderPromotion],
  "totalAmount": Money
}

OrderEvent

Description

Order event

Fields
Input Field Description
orderId - String! The Order ID
orderLines - [OrderLineInput!]! All order lines of the order
promotions - [PromotionInput!] All used promotions
totalPrice - Float! Total price including shipping and discounts
Example
{
  "orderId": "xyz789",
  "orderLines": [OrderLineInput],
  "promotions": [PromotionInput],
  "totalPrice": 987.65
}

OrderFilterInput

Description

Filters to select specific orders
The relationship between each filter criterion is a logical AND.

Fields
Input Field Description
articleName - String List of article names
There must be at least one item for each name in an order.
dateRange - OrderDateRange The time interval in which an order was placed
If no interval is set, orders from the last 6 months are fetched (this value can be changed in the backend, see OmsFilterCriteriaConverter).
orderNumbers - [String] Order number list
An order must match at least one number.
skus - [String] List of SKUs
There must be at least one item for each SKU in an order.
status - String The processing status of an order
Example
{
  "articleName": "xyz789",
  "dateRange": OrderDateRange,
  "orderNumbers": ["xyz789"],
  "skus": ["abc123"],
  "status": "xyz789"
}

OrderItem

Description

A detailed order line

Fields
Field Name Description
discountInfo - Money! Amount of discount applied for this position
images - [OrderItemImage]! A list of images of the ordered item (can be empty, e.g. if the item is no longer sold)
itemId - String! The ID of the ordered item
name - String! The Name of the ordered item
quantity - Int! The quantity of this position
shippingInfo - OrderShippingInfo Detailed shipping information such as shipping cost, shipping method and tracking code
sku - String! The SkU of the ordered item
status - String The status of the ordered item
totalPrice - Money! The total price of this position
unitPrice - Money! The unit price of the ordered item
Example
{
  "discountInfo": Money,
  "images": [OrderItemImage],
  "itemId": "xyz789",
  "name": "xyz789",
  "quantity": 123,
  "shippingInfo": OrderShippingInfo,
  "sku": "abc123",
  "status": "xyz789",
  "totalPrice": Money,
  "unitPrice": Money
}

OrderItemImage

Description

An image of an ordered item

Fields
Field Name Description
url - String URL of the image
Example
{"url": "xyz789"}

OrderLineInput

Description

Single order line

Fields
Input Field Description
categoryId - ID The ID of best matching product category
itemId - ID! The ID of the ordered item
name - String! Name of ordered item or product
price - Float! Total price of this order line
quantity - Int! Number of these items ordered
sku - String! SKU of the ordered item
Example
{
  "categoryId": 4,
  "itemId": 4,
  "name": "abc123",
  "price": 987.65,
  "quantity": 123,
  "sku": "abc123"
}

OrderListResult

Description

A list of orders from a single customer

Fields
Field Name Description
orderList - [Order]! List of orders, empty if the customer has not placed any orders yet
total - Int! Total number of customer's orders
Example
{"orderList": [Order], "total": 123}

OrderPagingInput

Description

Limit, offset and sort to list orders page by page

Fields
Input Field Description
page - Int! Index of current page (beginning with 1). Default = 1
pageSize - Int! Number of orders per page. Default = 10
sortBy - OrderSortBy! Sorting to list orders. Default = ORDER_DATE
sortDirection - OrderSortDirection! The sort order. Default = DESC
Example
{"page": 123, "pageSize": 987, "sortBy": "ORDER_DATE", "sortDirection": "ASC"}

OrderPaymentInfo

Description

Payment details information

Fields
Field Name Description
amount - Money The amount already paid
method - String The payment method
paymentDate - String The payment date
paymentId - String The payment ID of an order
referenceNumber - String The payment reference number
status - String The payment status
transactionId - String The transaction ID
type - String The payment type
Example
{
  "amount": Money,
  "method": "abc123",
  "paymentDate": "xyz789",
  "paymentId": "abc123",
  "referenceNumber": "abc123",
  "status": "xyz789",
  "transactionId": "abc123",
  "type": "xyz789"
}

OrderPromotion

Description

Details of a promotion used for an order

Fields
Field Name Description
description - String The description of the applied promotion
promotionCode - String The promotion code that was used
promotionName - String The name of the applied promotion
promotionType - String The type of applied promotion
Example
{
  "description": "abc123",
  "promotionCode": "xyz789",
  "promotionName": "abc123",
  "promotionType": "xyz789"
}

OrderShippingAddress

Description

A shipping address

Fields
Field Name Description
addition - String The address additions
city - String! The city specified for this address
company - String The company specified for this address
country - String! The country code for this address
email - String The email
firstname - String! The first name of the customer
lastname - String! The last name of the customer
number - String! The street number for this address
phone - String The phone number
postcode - String! The postal code of this address
salutation - String! The salutation of the customer
street - String! The street name of this address
title - String The title of the customer
Example
{
  "addition": "xyz789",
  "city": "abc123",
  "company": "xyz789",
  "country": "xyz789",
  "email": "abc123",
  "firstname": "abc123",
  "lastname": "abc123",
  "number": "abc123",
  "phone": "xyz789",
  "postcode": "abc123",
  "salutation": "abc123",
  "street": "abc123",
  "title": "xyz789"
}

OrderShippingInfo

Description

Detailed shipping information of an Order or an OrderItem

Fields
Field Name Description
shippingCost - Money The shipping costs
shippingMethod - String The shipping method
trackingCode - String The tracking number if available
Example
{
  "shippingCost": Money,
  "shippingMethod": "abc123",
  "trackingCode": "abc123"
}

OrderSortBy

Description

Available sort orders

Values
Enum Value Description

ORDER_DATE

Date an order was submitted

PAYMENT_METHOD

Used payment method

STATUS

Current status of an order

TOTAL

Total invoice amount of an order
Example
"ORDER_DATE"

OrderSortDirection

Description

Sort orders

Values
Enum Value Description

ASC

Ascending order

DESC

Descending order
Example
"ASC"

OrderSubmitProblem

Description

Problem when submitting an order

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

OrderSubmitProblems

Description

An aggregation of problems occurred when submitting an order

Fields
Field Name Description
problems - [OrderSubmitProblem] List of problems encountered
Example
{"problems": [OrderSubmitProblem]}

OrderSubmitResult

Description

Result type when submitting an order

Example
OrderSubmitProblems

OrderSubmitSuccess

Description

Type for successfully submit an order

Fields
Field Name Description
id - ID! The ID of the order
redirectUrl - String The redirect url of the payment
Example
{"id": 4, "redirectUrl": "abc123"}

Page

Description

Basic type for a shop page that contains most of the fields necessary to display a page

Fields
Field Name Description
metaTagDescription - String The meta tag description for this page
Deprecated, use seo instead. No longer supported
metaTagRobots - String The meta tag robots for this page
Deprecated, use seo instead. No longer supported
metaTagTitle - String The meta tag title for this page
Deprecated, use seo instead. No longer supported
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the back office

raster - Raster Raster of this page including all teasers
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page
Deprecated, use seo instead. No longer supported
seoThumbnail - Image SEO thumbnail for this page
Deprecated, use seo instead. No longer supported
Example
{
  "metaTagDescription": "xyz789",
  "metaTagRobots": "xyz789",
  "metaTagTitle": "abc123",
  "parameters": [ContentAttribute],
  "raster": Raster,
  "seo": Seo,
  "seoBoxText": "xyz789",
  "seoThumbnail": Image
}

PageSearchResult

Description

A SearchTermGroupPage is maintained for the search query and should be displayed

Fields
Field Name Description
page - Page! Typically, this is a maintained SearchTermGroupPage
searchResult - ProductSearchResult Optional search result
By default, no search result is returned. The search result can be activated in the backend (see SearchProvider#allowSearchOnSearchTermGroupPage).
Example
{
  "page": Page,
  "searchResult": ProductSearchResult
}

Paging

Description

The paging information

Fields
Input Field Description
limit - Int! The number of entries per page
Default: 100. Default = 100
offset - Int! Index of the starting entry
Example: To show the entries with index 15 to 24, set offset to 15 and limit to 10.
Default: 0. Default = 0
Example
{"limit": 123, "offset": 987}

ParameterInput

Description

Key/values parameter (e.g. used for request parameters)

Fields
Input Field Description
name - String! Name of parameter
values - [String!]! Values of parameter
Example
{
  "name": "xyz789",
  "values": ["abc123"]
}

Payment

Description

Payment related information

Fields
Field Name Description
interfaceId - ID! The ID of the PSP
methodCodes - [String]! The method codes for this payment
Example
{
  "interfaceId": "4",
  "methodCodes": ["xyz789"]
}

PaymentMethod

Description

A payment method

Fields
Field Name Description
code - String! The payment method code used as methodCode in PaymentMethodInput
interfaceId - String! The ID of the payment method interface used as interfaceId in PaymentMethodInput
label - String! The name of this payment method to display
Example
{
  "code": "xyz789",
  "interfaceId": "abc123",
  "label": "abc123"
}

PaymentMethodInput

Description

The payment method information

Fields
Input Field Description
interfaceId - String! The ID of the payment method interface
methodCode - String! The payment method code
Example
{
  "interfaceId": "abc123",
  "methodCode": "abc123"
}

PercentBenefit

Description

Benefit of a percentage discount

Fields
Field Name Description
cap - Money Maximum absolute discount
image - Image The image of the benefit maintained in the back office
percentage - Float The discount percentage
title - String The title of the benefit maintained in the back office
Example
{
  "cap": Money,
  "image": Image,
  "percentage": 987.65,
  "title": "abc123"
}

PercentOnCheapestItemBenefit

Description

Benefit of a percentage discount on the cheapest item

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
singleItemPercentage - Float The discount percentage applied on the cheapest item
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "singleItemPercentage": 123.45,
  "title": "abc123"
}

PercentOnMostExpensiveItemBenefit

Description

Benefit of a percentage discount on the most expensive item

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
singleItemPercentage - Float The discount percentage applied on the most expensive item
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "singleItemPercentage": 123.45,
  "title": "abc123"
}

Phone

Description

phone of a customer

Fields
Field Name Description
number - String phone number
type - PhoneType phone type
Example
{"number": "abc123", "type": "FAX"}

PhoneInput

Description

phone of a customer

Fields
Input Field Description
number - String! phone number
type - PhoneType phone type. Default = HOME
Example
{"number": "abc123", "type": "FAX"}

PhoneType

Description

Available phone types

Values
Enum Value Description

FAX

HOME

MOBILE

OTHER

PAGER

WORK

Example
"FAX"

PositionOperation

Description

The possible operations related to the position of a cart

As long as there are no unions of input types, we need to define inputs that behave like unions.

Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
addPosition - CreatePositionInput Adds a new position
addPromoItem - AddPromoItemOperation Adds a promotion item
removePosition - DeletePosition Removes a position
restorePosition - RestorePosition Restores a deleted position
updatePosition - UpdatePositionInput Updates a position
Example
{
  "addPosition": CreatePositionInput,
  "addPromoItem": AddPromoItemOperation,
  "removePosition": DeletePosition,
  "restorePosition": RestorePosition,
  "updatePosition": UpdatePositionInput
}

PrivacyConsentInput

Description

The user's consent for tracking

Fields
Input Field Description
marketing - Boolean! Allows tracking for marketing purposes
Default: false. Default = false
other - Boolean! Allows tracking for other purposes
Default: false. Default = false
tracking - Boolean! Allows tracking for tracking purposes
Default: false. Default = false
Example
{"marketing": false, "other": false, "tracking": false}

Product

Description

A shop product

Fields
Field Name Description
id - ID The ID of this product
additionalImages - [Image]! Additional Images of this product
Arguments
roles - [ImageRole!]!

Only Images of this ImageRoles are returned

assets - [Asset]! Assets of this item for display on the product detail page
bestVariation - Item The preferred item of this product
brand - Brand The brand of this product
breadcrumb - [Category]! Category path of this product
Arguments
categoryId - String

Product category, since a product can belong to several categories
If no category ID is set, the best matching category is selected as the product category.

order - SortOrder!

The categories are sorted from top-level category to product category, this sorting can be reversed here
Default: ascending (sorted as defined in the backoffice)

categories - [Category]! List of all categories to which the product belongs
category - Category The best matching category of this product
documents - [Document]! Documents of this product for display on the product detail page
features - [ProductFeature]! List of all product features
Product features are properties that are maintained on the product (e.g. material).
globalContent - Raster Global content maintained for all product detail pages
image - Image Image of this product for display on product lists
link - Link! Link to this product
longDescription - String Product long description
Arguments
format - TextFormat!

Format of the description (plain text or HTML formatted text)
Default: PLAIN

materials - [String!]! The material composition of this product
name - String! The name of this product
page - MaintainedProductPage Product detail page maintained in the back office for this product
recommendations - ProductRecommendations! Recommendations for this product based on the selected strategy
Arguments
includingReducedProducts - Boolean!

If set to false significantly discounted products (usually products with a discount of 5 percent or more) will not be listed
Default: true

paging - RecommendationPaging!

Paging to list recommended products
Default: Paging with limit 100 and offset 0

strategy - ProductRecommendationStrategy!

Recommendation strategy to use
Default: PRODUCT

reviews - Reviews! List of all reviews for this product
sellingPoints - [String!]! List of selling points for this product
seo - Seo! SEO information of this product
shortDescription - String Product short description
variations - [Item]! The items of this product
The default supported sorts are: 'ID' (ascending), 'PRICE' (ascending) AND 'NONE'
Default: 'NONE'
Arguments
sortBy - String!
vat - String The value added tax for this product
videos - [Video]! Videos of this product for display on the product detail page
Example
{
  "id": 4,
  "additionalImages": [Image],
  "assets": [Document],
  "bestVariation": Item,
  "brand": Brand,
  "breadcrumb": [Category],
  "categories": [Category],
  "category": Category,
  "documents": [Document],
  "features": [ProductFeature],
  "globalContent": Raster,
  "image": Image,
  "link": Link,
  "longDescription": "abc123",
  "materials": ["xyz789"],
  "name": "abc123",
  "page": MaintainedProductPage,
  "recommendations": ProductRecommendations,
  "reviews": Reviews,
  "sellingPoints": ["xyz789"],
  "seo": Seo,
  "shortDescription": "abc123",
  "variations": [Item],
  "vat": "abc123",
  "videos": [Video]
}

ProductBox

Description

A product with a list of its filtered items

Fields
Field Name Description
item - Item! The preferred item of the product
items - [Item]! Product variations to display
This is either all valid items of the product or a list of the filtered items of the product.
product - Product! The product to display
Example
{
  "item": Item,
  "items": [Item],
  "product": Product
}

ProductCinemaTeaser

Description

A Product cinema or recommendations teaser
This teaser type is activated by default.

Fields
Field Name Description
entries - [ProductBox]! A list of products with a list of filtered items
Arguments
paging - Paging!

Paging to list products

headline - String The headline of this teaser
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
totalCount - Int! Number of all products in this teaser
Example
{
  "entries": [ProductBox],
  "headline": "abc123",
  "meta": TeaserMeta,
  "name": "abc123",
  "totalCount": 987
}

ProductFeature

Fields
Field Name Description
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
Possible Types
ProductFeature Types

BaseFeature

ValueWithUnitFeature

Example
{"sequenceNo": 987}

ProductList

Description

Types for different product lists like Cart and Wishlist

Fields
Field Name Description
id - ID! The ID of this product list
name - String! The name of this product list
Possible Types
ProductList Types

Cart

Wishlist

Example
{
  "id": "4",
  "name": "abc123"
}

ProductListAttribute

Description

Backend types 'Product', 'ProductList', 'ProductListUnordered', 'HeroProductList' and 'AntiHeroProductList' which are lists of products and items

Fields
Field Name Description
name - String! The name of this attribute
searchResultEntries - [SearchResultEntry]! Product list (with all relevant items, e.g. if the product list is the result of a search for "red")
Example
{
  "name": "abc123",
  "searchResultEntries": [SearchResultEntry]
}

ProductRecommendationStrategy

Description

Available strategies for product recommendations

Values
Enum Value Description

AI_IMAGE

Strategy based on product/item images

BASKET

Strategy based on products in users' shopping carts

ORDER

Strategy based on the product of orders from users

PRODUCT

Strategy based on product views from users
Example
"AI_IMAGE"

ProductRecommendations

Description

Result type for product recommendations

Fields
Field Name Description
products - [Product]! List of recommended products
totalCount - Int! Total count of recommended products
Example
{"products": [Product], "totalCount": 123}

ProductRelation

Description

Relation between an item and a product or item (including attributes)

Fields
Field Name Description
attributes - [RelationAttribute]! List of attributes of this relation
relation - RelatedProduct! The related product or item
Example
{
  "attributes": [RelationAttribute],
  "relation": Item
}

ProductRelations

Description

Relation between an item and a list of products or items (including attributes)

Fields
Field Name Description
displayName - String Display name of this relation (e.g. 'Accessory products')
relations - [ProductRelation]! List of related products or items
totalCount - Int! Total number of related products or items
Example
{
  "displayName": "xyz789",
  "relations": [ProductRelation],
  "totalCount": 987
}

ProductSearchResult

Description

The search result with a list of the products and items found

Fields
Field Name Description
content - ContentSearchResult! Returns a list of the entries found for the content search. The content search returns matches in searchable content with title, text of the content and link, if available. For example, a HTML Teaser can be configured to be searchable.
entries - [SearchResultEntry]! List of search hits
filters - [Filter]! List of available filters for further filtering
groupBy - [String!]! Names of product variations this search result is grouped by (see name of ItemAttribute and variations of Item)
For example, for an item-based search result grouped by the color of each item, this returns [import:color]. For a product-based search result, this list is empty.
These values can be used to highlight or hide the corresponding values of the product variations.
Deprecated, the information on how the search result was grouped can now be found in the SearchItem. No longer supported
minPrice - String! The minimum price for all items of a search hit
selectedCategory - SearchResultCategory Category tree for further filtering by category
Arguments
hidden - CategoryHiddenStatus!

Parameter to exclude categories in content tree that are hidden in main, left or after search navigation
Default: categories that are hidden in after search navigation will not be returned

seo - Seo! SEO information of this search result
sorts - [SearchSort]! List of available sorts
teaserInsertions - [TeaserAttribute]! 24 teasers to be displayed within the product list
The returned list may contain null if no teaser is maintained for a position.
totalCount - Int! Total number of search hits
Example
{
  "content": ContentSearchResult,
  "entries": [SearchResultEntry],
  "filters": [Filter],
  "groupBy": ["abc123"],
  "minPrice": "xyz789",
  "selectedCategory": SearchResultCategory,
  "seo": Seo,
  "sorts": [SearchSort],
  "teaserInsertions": [TeaserAttribute],
  "totalCount": 987
}

ProductService

Description

Description of an additional product service

Fields
Field Name Description
html - String!

HTML of this service (e.g. '

installment payment
')

id - String! ID of this service (e.g. 'installmentpayment')
value - String! Value of this service (e.g. 'installment payment')
Example
{
  "html": "abc123",
  "id": "xyz789",
  "value": "xyz789"
}

ProductSourceInput

Description

Possible values for the source when adding a product to the cart or wishlist

Values
Enum Value Description

BASKET

Product was added from cart

DIRECT_ORDER

Product was added from direct order

NOTEPAD

Product was added from wishlist

PRODUCT_VIEW

Product was added from product detail page

QUICK_VIEW

Product was added from quick view

UNKNOWN

Fallback if source unknown
Example
"BASKET"

ProductSuggest

Description

Product suggestion(s) (e.g. 'Nike Air Force' for 'forc')

Fields
Field Name Description
match - String! Product string that matches on query string (e.g. 'Nike Air Force' for 'forc')
products - [Product]! Suggested products
Arguments
limit - Int!

Limits the number of products that were suggested because the same search term was indexed for all of those products
For example, if there are two products with the same name 'Toilet Plunger', this list will contain those two products. But you may want to avoid duplicate product names in the list, then this list can be limited to one entry, which is the default.
Default: 1

Example
{
  "match": "xyz789",
  "products": [Product]
}

ProductViewEvent

Description

Product view event

Fields
Input Field Description
categoryId - ID The ID of the category in whose context the product view was made
Such a category can be from whose product list the product was clicked or which was used as a criterion in a search.
itemId - ID! The item ID
Example
{"categoryId": 4, "itemId": 4}

PromoItem

Description

Types of available promotion item types

Example
FreeAddonsInfo

Promotion

Description

A shop promotion
A promotion contains a list of benefits that are applied to a cart position or the entire cart. Available benefit types are:

Fields
Field Name Description
benefits - [Benefit] A list of benefits of this promotion
description - String The description of this promotion
id - ID! The ID of this promotion
name - String The name of this promotion
Example
{
  "benefits": [Benefit],
  "description": "abc123",
  "id": "4",
  "name": "abc123"
}

PromotionInput

Description

Promotion used in order

Fields
Input Field Description
name - String The Name of used promotion
voucherCode - String The code of used voucher
Example
{
  "name": "xyz789",
  "voucherCode": "xyz789"
}

RangeDoubleFilter

Description

Range filter to filter by double values

Fields
Field Name Description
displayName - String! The name of this filter to display
id - ID! Filter ID which is used in RangeFilterInput as id
max - Float! Highest value in result set after all other filters have been applied
maxSelected - Float! Currently applied upper bound (equal to max if no max value was selected)
min - Float! Lowest value in result set after all other filters have been applied
minSelected - Float! Currently applied lower bound (equal to min if no min value was selected)
unit - String Unit like "cm" or "kg"
Example
{
  "displayName": "xyz789",
  "id": "4",
  "max": 987.65,
  "maxSelected": 123.45,
  "min": 987.65,
  "minSelected": 123.45,
  "unit": "abc123"
}

RangeFilterInput

Description

Filter that operates on range of numerical values

Fields
Input Field Description
from - Float! Lower bound
id - ID! Filter ID (e.g. 'price', 'length', 'weight')
to - Float! Upper bound
Example
{"from": 987.65, "id": "4", "to": 123.45}

RangePriceFilter

Description

Range filter to filter by price

Fields
Field Name Description
count - Int! Number of search hits in selected range after all other filters have been applied
displayName - String! The name of this filter to display
id - ID! Filter ID which is used in RangeFilterInput as id
max - Money! Highest price in result set after all other filters have been applied
maxSelected - Money! Currently applied upper bound (equal to max if no price filter is set)
min - Money! Lowest price in result set after all other filters have been applied
minSelected - Money! Currently applied lower bound (equal to min if no price filter is set)
percentileBoundaries - [Money]! Selectable prices between min and max
Example
{
  "count": 987,
  "displayName": "xyz789",
  "id": 4,
  "max": Money,
  "maxSelected": Money,
  "min": Money,
  "minSelected": Money,
  "percentileBoundaries": [Money]
}

Raster

Description

Raster used on pages to display teasers

Fields
Field Name Description
elements - [RasterElement]! All raster elements with maintained content
Arguments
sortBy - RasterElementSort!

Sort order of raster elements
Default: sorted by row (first row 0 / column 0, then row 0 / column 1, ..., row 1 / column 0, ...)

totalHeight - Int! Total height of raster (number of rows excluding empty rows at end of raster)
totalWidth - Int! Total width of raster (number of columns including empty columns at end of raster)
Example
{
  "elements": [RasterElement],
  "totalHeight": 123,
  "totalWidth": 987
}

RasterElement

Description

Raster element with position and teaser content

Fields
Field Name Description
column - Int! Index of starting column (0 for first column)
height - Int! The height as number of rows
parameters - [ContentAttribute]! Additional shop specific parameters of this raster element
By default, the raster element parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#rasterElementParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the backend

row - Int! Index of starting row (0 for first row)
teaser - TeaserAttribute Content of this element (not set if teaser is not supported by API)
tracking - String Additional tracking information
width - Int! The width as number of columns
Example
{
  "column": 987,
  "height": 123,
  "parameters": [ContentAttribute],
  "row": 987,
  "teaser": TeaserAttribute,
  "tracking": "xyz789",
  "width": 987
}

RasterElementSort

Description

Sorting of raster elements

Fields
Input Field Description
sortOrder - SortOrder! Sort order of raster elements Default: ascending. Default = ASC
sortType - RasterElementSortType! Sort type of raster elements Default: by row (first row 0 / column 0, then row 0 / column 1, ..., row 1 / column 0, ...). Default = ROW
Example
{"sortOrder": "ASC", "sortType": "COLUMN"}

RasterElementSortType

Description

Sorting types for raster elements

Values
Enum Value Description

COLUMN

Elements are sorted by column (elements with column == 0 first)

ROW

Elements are sorted by row (elements with row == 0 first)
Example
"COLUMN"

Rating

Description

Available ratings

Values
Enum Value Description

FIVE

5 'stars' rating

FOUR

4 'stars' rating

ONE

1 'star' rating

THREE

3 'stars' rating

TWO

2 'stars' rating
Example
"FIVE"

RatingFilter

Description

Search filter to search for products with user ratings

Fields
Field Name Description
displayName - String! The name of this filter to display
id - ID! Filter ID which is used in EnumFilterInput as id
ratingFilterValues - [RatingFilterValue]! Filter value to filter by user rating
Example
{
  "displayName": "xyz789",
  "id": "4",
  "ratingFilterValues": [RatingFilterValue]
}

RatingFilterValue

Description

Filter value to filter by rating
A filter on TWO 'stars' filters the search results to all products with a rating of at least TWO 'stars'.

Fields
Field Name Description
count - Int Number of search hits when restricted to this value after all other filters have been applied
displayValue - String The name of this filter value to display
rating - Rating! Value of the RatingFilter which is used in EnumFilterInput as values
Use the string presentation of this value as 'values' in EnumFilterInput.
selected - Boolean true if used in current search
Example
{
  "count": 987,
  "displayValue": "xyz789",
  "rating": "FIVE",
  "selected": false
}

RecommendationPaging

Description

Limit and offset for a list of recommendations

Fields
Input Field Description
limit - Int! The number of recommendations per page
Default: 100. Default = 100
maxLimit - Int Maximal number of recommendations to request
By default this is offset + limit.
offset - Int! The starting position in the recommendation list
Example: To show the entries with index 15 to 24, set offset to 15 and limit to 10.
Default: 0. Default = 0
Example
{"limit": 123, "maxLimit": 123, "offset": 123}

Redirect

Description

Redirect information

Fields
Field Name Description
responseCode - Int! This code is 301 (indicating that the resource has permanently moved to a new location) or 302 (indicating that the resource reside temporarily under a different URI)
url - String! The redirect URL, which can be absolute or relative (depending on how it was maintained in the back office)
Example
{"responseCode": 123, "url": "abc123"}

RedirectSearchResult

Description

The search result is not a list of products and articles, but a specific page should be displayed

Fields
Field Name Description
link - Link! Link to resource to be displayed
Typically, it is the product detail page if there was only one search hit, or a redirect to a maintained ContentTreePage such as the imprint.
Example
{"link": Link}

RegistrationTypeInput

Description

User types

Values
Enum Value Description

GUEST

User is a guest user

REGISTERED

User is a registered user
Example
"GUEST"

RelatedProduct

Description

Product or item that is related to another item

Types
Union Types

Item

Product

Example
Item

RelationAttribute

Description

An attribute of a relation

Fields
Field Name Description
displayName - String Display name of this attribute (e.g. 'size')
values - [BaseValue]! List of attribute values
Example
{
  "displayName": "xyz789",
  "values": [BaseValue]
}

RelationsPaging

Description

The paging information for product relations

Fields
Input Field Description
limit - Int! The number of entries per page
Default: 12. Default = 12
offset - Int! Index of the starting entry
Example: To show the entries with index 15 to 24, set offset to 15 and limit to 10.
Default: 0. Default = 0
Example
{"limit": 987, "offset": 987}

RemoveAttribute

Description

Operation to remove a attribute from a cart

Fields
Input Field Description
name - String! The name of the attribute to remove
Example
{"name": "abc123"}

RemoveFromBasketEvent

Description

Remove from basket event

Fields
Input Field Description
itemId - ID! The ID of the removed item
Example
{"itemId": "4"}

RemoveFromWishlistEvent

Description

Remove from wishlist event

Fields
Input Field Description
itemId - ID! The ID of the removed item
Example
{"itemId": 4}

RestorePosition

Description

Operation to restore a deleted position

Fields
Input Field Description
positionId - ID! The ID of the deleted position to be restored
Example
{"positionId": "4"}

Review

Description

Detailed review of a product

Fields
Field Name Description
author - String! The author of this review
helpfulCount - Int! 'Review is helpful' counter
id - ID! The ID of this review
message - String! The text of this review
notHelpfulCount - Int! 'Review is not helpful' counter
rating - Int! The rating of this review
title - String! The title of this review
Example
{
  "author": "xyz789",
  "helpfulCount": 987,
  "id": 4,
  "message": "xyz789",
  "notHelpfulCount": 123,
  "rating": 123,
  "title": "xyz789"
}

Reviews

Description

All reviews of a product

Fields
Field Name Description
average - Float! Average rating of a product (0 if there are no reviews)
bestRating - Int! Best rating of a product (0 if there are no reviews)
count - Int! Total number of reviews of a product
reviews - [Review]! List of all reviews
worstRating - Int! Worst rating of a product (0 if there are no reviews)
Example
{
  "average": 123.45,
  "bestRating": 123,
  "count": 123,
  "reviews": [Review],
  "worstRating": 123
}

RichMediaTeaser

Description

A rich media teaser
This teaser type is activated by default.

Fields
Field Name Description
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
tabs - [RichMediaTeaserTab]! A ordered list of RichMediaTeaserTabs
Example
{
  "meta": TeaserMeta,
  "name": "xyz789",
  "tabs": [RichMediaTeaserTab]
}

RichMediaTeaserTab

Description

Single tab of a RichMediaTeaser

Fields
Field Name Description
headline - String The headline of this tab
image - LinkedImage! A linked image
name - String The name of this tab
subHeadline - String The sub headline or text of this tab
trackingInfo - String Additional Tracking information
Example
{
  "headline": "abc123",
  "image": LinkedImage,
  "name": "xyz789",
  "subHeadline": "xyz789",
  "trackingInfo": "xyz789"
}

Salutation

Description

A salutation

Fields
Field Name Description
code - String! The code of this salutation
label - String! The display name of this salutation
Example
{
  "code": "xyz789",
  "label": "xyz789"
}

SearchColor

Description

The broad color of an item

Fields
Field Name Description
displayName - String! The display name of this color (e.g. 'red' or 'black')
Example
{"displayName": "abc123"}

SearchEvent

Description

Search event

Fields
Input Field Description
query - String! Term used for the search
results - [SearchResultInput!]! Top 10 search results
total - Int! Number of search hits
Example
{
  "query": "xyz789",
  "results": [SearchResultInput],
  "total": 123
}

SearchFilter

Description

Search query including product/item based attribute filters

Fields
Input Field Description
byUser - Boolean! If set to true, the search was performed by a user
For example, this parameter should remain false when clicking on a teaser that triggers a search.
Default: false. Default = false
category - ID Limits the search to a category
enumFilters - [EnumFilterInput!]! Specifies filters that operate on discrete values and computes an intersection of all specified filters
The available filters can be found by execute a search without any filter set (see field filters in ProductSearchResult). Default = []
rangeFilters - [RangeFilterInput!]! Specifies filters that operate on range of numerical values and computes an intersection of all specified filters
The available filters can be found by execute a search without any filter set (see field filters in ProductSearchResult). Default = []
searchTerm - String Term to search for products and items
Either a search term or a category or both must be specified for a search.
Example
{
  "byUser": false,
  "category": 4,
  "enumFilters": [EnumFilterInput],
  "rangeFilters": [RangeFilterInput],
  "searchTerm": "xyz789"
}

SearchFilterEvent

Description

Search filter event

Fields
Input Field Description
filters - [EnumFilterInput!]! List of filters used by the user (except range/price filters)
query - String! Term used for the search
Example
{
  "filters": [EnumFilterInput],
  "query": "xyz789"
}

SearchItem

Description

Item that is the result of a search (e.g. a red shoe when searching for "nike red")
In addition to the item found, this SearchItem also contains the information on which item attributes the search was grouped by.

Fields
Field Name Description
groupBy - [ItemAttribute]! The item variations by which the search result is grouped (see 'variations' of Item)
These values can be used, for example, to highlight these variations.
For a product-based search result, this list is empty.
item - Item! The found item
variations - [ItemAttribute]! The item variations by which a search result is not grouped
For a product-based search result, this list is equal to variations of the item.
Example
{
  "groupBy": [ItemAttribute],
  "item": Item,
  "variations": [ItemAttribute]
}

SearchPaging

Description

Limit, offset and sort to list a search result

Fields
Input Field Description
limit - Int The number of entries per page
The default value is 100 only if no default value is configured in the back office.
offset - Int! The starting position in the search result list
Example: To show the entries with index 15 to 24, set offset to 15 and limit to 10.
Default: 0. Default = 0
sortBy - String Sorting defined by the shop (e.g. 'price')
The available sorts can be found by execute a search without sortBy set (see field sorts in ProductSearchResult).
Example
{
  "limit": 123,
  "offset": 987,
  "sortBy": "abc123"
}

SearchResult

Description

Types of different search result types

Example
PageSearchResult

SearchResultCategory

Description

Category tree showing the number of search hits in each category

Fields
Field Name Description
category - Category Product category (initially the category that was filtered by)
children - [SearchResultCategory]! Valid child categories of category
If category is not set or is the root category, these are the top-level categories.
count - Int! Total number of search hits in category
Example
{
  "category": Category,
  "children": [SearchResultCategory],
  "count": 987
}

SearchResultEntry

Description

Single search hit

Fields
Field Name Description
antiHeroArticle - Boolean! true if the search hit is an "anti-hero" article
bestItem - SearchItem! The best Item calculated by the Best Item Comparator of the searchItems
Normally has the best price depending on how the comparator is implemented in the Shop
heroArticle - Boolean! true if the search hit is a "hero" article that can be promoted
items - [Item]! Matching items of the product, which may be a subset of all items of the product
Deprecated, use searchItems instead. No longer supported
product - Product! Matching product
searchItems - [SearchItem]! Matching items of the product, which may be a subset of all items of the product
A SearchItem also contains information about which attributes were used to group the items when searching.
Example
{
  "antiHeroArticle": false,
  "bestItem": SearchItem,
  "heroArticle": true,
  "items": [Item],
  "product": Product,
  "searchItems": [SearchItem]
}

SearchResultInput

Description

A single search result

Fields
Input Field Description
itemIds - [ID!]! The IDs of the items that match the search query
productId - ID! The product ID
Example
{
  "itemIds": ["4"],
  "productId": "4"
}

SearchSort

Description

Available sorting

Fields
Field Name Description
displayName - String! The name of this sorting to display
name - String! The name of this sorting used as sortBy in SearchPaging
selected - Boolean! true if this sorting is the default
Example
{
  "displayName": "xyz789",
  "name": "abc123",
  "selected": true
}

SearchSuggest

Description

Result of search suggestion query containing different types of suggestions

Fields
Field Name Description
brandSuggests - [BrandSuggest]! Suggested brands where the query string is at the beginning of a word of the brand name
categorySearchSuggests - [CategorySearchSuggest]! Suggested search terms within a category where the query string is at the beginning of a word of the search term
categorySuggests - [CategorySuggest]! Suggested categories where the query string is at the beginning of a word of the category name
productSuggests - [ProductSuggest]! Suggested products where the query string is at the beginning of a word of the product name
In the back office it is possible to index more fields of a product than just the name (e.g. short description or SKU).
topSearchSuggests - [TopSearchSuggest]! Suggested search terms where the query string is at the beginning of a word of the search term
Example
{
  "brandSuggests": [BrandSuggest],
  "categorySearchSuggests": [CategorySearchSuggest],
  "categorySuggests": [CategorySuggest],
  "productSuggests": [ProductSuggest],
  "topSearchSuggests": [TopSearchSuggest]
}

SearchTermGroupPage

Description

Page maintained under 'Search term groups' in the back office
It is possible to define a specific layout for a search term group in the back office.

Fields
Field Name Description
link - Link! Link to this search page
metaTagDescription - String The meta tag description for this page No longer supported
metaTagRobots - String The meta tag robots for this page No longer supported
metaTagTitle - String The meta tag title for this page No longer supported
parameters - [ContentAttribute]! Additional shop specific parameters of this page
Such a parameter can be, for example, a teaser insertion. There can be different types of parameters, from simple text to a complex teaser. By default, the page parameters are disabled and need to be enabled in the backend (see ShopApiConfigurer#pageParameterWhitelist).
Arguments
names - [String!]!

Name(s) of the parameter(s) as defined in the back office

raster - Raster Raster of this page including all teasers
seo - Seo! SEO information of this page
seoBoxText - String HTML formatted SEO box text for this page No longer supported
seoThumbnail - Image SEO thumbnail for this page No longer supported
Example
{
  "link": Link,
  "metaTagDescription": "xyz789",
  "metaTagRobots": "xyz789",
  "metaTagTitle": "abc123",
  "parameters": [ContentAttribute],
  "raster": Raster,
  "seo": Seo,
  "seoBoxText": "xyz789",
  "seoThumbnail": Image
}

SearchTermRecommendations

Description

Result type for search term recommendations

Fields
Field Name Description
searchTerms - [String!]! List of recommended search terms
totalCount - Int! Total count of recommended search terms
Example
{
  "searchTerms": ["abc123"],
  "totalCount": 987
}

Seo

Description

SEO information of a page

Fields
Field Name Description
canonicalUrl - String The SEO main term
This is set for a category whose name is a SEO main term from another category.
headline - String The headline as it can be maintained in the backoffice
hreflang - [Hreflang]! URLs of other versions of this page in different languages
metaTags - [MetaTag]! " List of meta tags (e.g. robots)
seoBoxText - String HTML formatted SEO box text
title - String The meta tag title
Example
{
  "canonicalUrl": "xyz789",
  "headline": "xyz789",
  "hreflang": [Hreflang],
  "metaTags": [MetaTag],
  "seoBoxText": "xyz789",
  "title": "abc123"
}

ServiceContentTeaser

Description

The 'Service content' teaser
This teaser type is activated by default.

Fields
Field Name Description
anchor - String Anchor of this teaser
headline - String The headline of this teaser
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
tabs - [ServiceContentTeaserTab]! A ordered list of ServiceContentTeaserTabs
Example
{
  "anchor": "xyz789",
  "headline": "abc123",
  "meta": TeaserMeta,
  "name": "abc123",
  "tabs": [ServiceContentTeaserTab]
}

ServiceContentTeaserTab

Description

Single tab of a ServiceContentTeaser

Fields
Field Name Description
anchor - String Anchor of this teaser tab
content - String Content of this teaser tab
open - Boolean! true if the tab content is initially displayed
service - String! Service headline
Example
{
  "anchor": "xyz789",
  "content": "abc123",
  "open": false,
  "service": "abc123"
}

ServiceTeaser

Description

A 'Service' teaser
This teaser type is activated by default.

Fields
Field Name Description
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
tabs - [ServiceTeaserTab]! A ordered list of ServiceTeaserTabs
Example
{
  "meta": TeaserMeta,
  "name": "abc123",
  "tabs": [ServiceTeaserTab]
}

ServiceTeaserTab

Description

Single tab of a ServiceTeaser

Fields
Field Name Description
content - String Service description
iconCss - String CSS class to display an icon image
link - Link! Link of this teaser tab
themeCss - String CSS class for the service theme
Example
{
  "content": "abc123",
  "iconCss": "abc123",
  "link": Link,
  "themeCss": "abc123"
}

SetActive

Description

Operation to set the active flag

Fields
Input Field Description
value - Boolean! true indicates the active status. Default = false
Example
{"value": true}

SetBillingAddress

Description

Operation to set the billing address

Fields
Input Field Description
value - AddressInput The billing address
Example
{"value": AddressInput}

SetBirthDate

Description

Operation to set the birthDate

Fields
Input Field Description
value - Date! The birth date to set
Example
{"value": "2007-12-03"}

SetCompany

Description

Operation to set a customer's company

Fields
Input Field Description
value - String! The company to set
Example
{"value": "xyz789"}

SetDefault

Description

Operation to set the default flag

Fields
Input Field Description
value - Boolean! true indicates the default status. Default = false
Example
{"value": false}

SetDefaultShippingAddress

Description

Operation to set the default shipping address

Fields
Input Field Description
addressId - String! The ID of an existing shipping address to make the default
Example
{"addressId": "xyz789"}

SetFirstname

Description

Operation to set the first name

Fields
Input Field Description
value - String! The first name to set
Example
{"value": "xyz789"}

SetFreeAddons

Description

Sets one or more free addons to the cart

Existing free addons will be overwritten.

Fields
Input Field Description
items - [SetPromoItemInput]! The list of promotion items to set
setPromotionReference - SetPromotionReference! The referenced promotion
Example
{
  "items": [SetPromoItemInput],
  "setPromotionReference": SetPromotionReference
}

SetFreeItems

Description

Sets one or more free items to the cart

Existing free items will be overwritten.

Fields
Input Field Description
items - [SetPromoItemInput]! The list of promotion items to set
setPromotionReference - SetPromotionReference! The referenced promotion
Example
{
  "items": [SetPromoItemInput],
  "setPromotionReference": SetPromotionReference
}

SetGuestId

Description

Operation to set the ID of a guest user (usually the email address)

Fields
Input Field Description
value - String

The identifier of the guest.

Use null to reset the guest ID.

Example
{"value": "abc123"}

SetItemId

Description

Operation to set the item ID

Fields
Input Field Description
value - String! The item ID
Example
{"value": "xyz789"}

SetLastname

Description

Operation to set the last name

Fields
Input Field Description
value - String! The last name to set
Example
{"value": "abc123"}

SetName

Description

Operation to sets the name field

Fields
Input Field Description
value - String! The name to set
Example
{"value": "abc123"}

SetPaymentMethod

Description

Operation to set the payment method

Fields
Input Field Description
value - PaymentMethodInput! The payment method
Example
{"value": PaymentMethodInput}

SetProductId

Description

Operation to set the product ID

Fields
Input Field Description
value - String! The product ID
Example
{"value": "xyz789"}

SetPromoItemInput

Description

Operation to set the ID and the quantity of a promotion item

Fields
Input Field Description
setItemId - SetItemId! Sets the id of the promotion item
setQuantity - SetQuantity! Sets the quantity of the promotion item
Example
{
  "setItemId": SetItemId,
  "setQuantity": SetQuantity
}

SetPromotionReference

Description

Operation to set the referenced promotion of a promotion item

Fields
Input Field Description
value - String! The promotion reference
Example
{"value": "abc123"}

SetQuantity

Description

Operation to sets the quantity field (overrides prior value)

Fields
Input Field Description
value - Int The quantity to set. Default = 1
Example
{"value": 987}

SetReviewHelpful

Description

Operation to set whether this review is helpful

Fields
Input Field Description
value - Boolean! true if the rating is helpful
Example
{"value": false}

SetSalutation

Description

Operation to set a customer's salutation

Fields
Input Field Description
value - String! The salutation to set
Example
{"value": "abc123"}

SetShippingAddress

Description

Operation to set the shipping address

Fields
Input Field Description
notes - String Additional notes for the address
value - AddressInput! The shipping address
Example
{
  "notes": "xyz789",
  "value": AddressInput
}

SetShippingMethod

Description

Operation to set the shipping method

Fields
Input Field Description
value - ShippingMethodInput! The shipping method
Example
{"value": ShippingMethodInput}

SetSpecialPriceItems

Description

Sets one or more items with a special price to the cart

Existing items with a special price will be overwritten.

Fields
Input Field Description
items - [SetPromoItemInput]! The list of promotion items to set
setPromotionReference - SetPromotionReference! The referenced promotion
Example
{
  "items": [SetPromoItemInput],
  "setPromotionReference": SetPromotionReference
}

SetTitle

Description

Operation to set a customer's title

Fields
Input Field Description
value - String! The title to set
Example
{"value": "abc123"}

ShippingAddress

Description

A shipping address of the customer

Fields
Field Name Description
additions - [String]! The address additions
attributes - JSON

Additional attributes as JSON
Example:

{
  "attribute1": "value1",
  "attribute2": {
    "test": 157
  },
  "attribute3": 5.90
}
city - String! The city specified for this address
company - String The company specified for this address
country - Country! The country code and label for this address
email - String The email
firstname - String! The first name of the customer
id - ID ID of this address
isShop - Boolean! true if this shipping address is a pickup shop
isStation - Boolean! true if this shipping address is a packstation
If this shipping address is a packstation street is the post number and number is the station number of the packstation.
lastname - String! The last name of the customer
notes - String Notes accompanying the order
number - String! The street number for this address
This is the station number for a packstation.
phone - String The phone number
postcode - String! The postal code of this address
salutation - Salutation The salutation of the customer
street - String! The street name of this address
This is the post number (the customer number at DHL) for a packstation.
title - String The title of the customer
Example
{
  "additions": ["abc123"],
  "attributes": {},
  "city": "abc123",
  "company": "abc123",
  "country": Country,
  "email": "abc123",
  "firstname": "xyz789",
  "id": "4",
  "isShop": false,
  "isStation": true,
  "lastname": "abc123",
  "notes": "abc123",
  "number": "abc123",
  "phone": "abc123",
  "postcode": "abc123",
  "salutation": Salutation,
  "street": "xyz789",
  "title": "abc123"
}

ShippingAddressPagingInput

Description

Limit and offset to list shipping addresses page by page

Fields
Input Field Description
page - Int! Index of current page (beginning with 1). Default = 1
pageSize - Int! Number of Addresses per page
If this value is empty or 0, all addresses are returned. Default = 0
Example
{"page": 123, "pageSize": 987}

ShippingMethod

Description

A shipping method

Fields
Field Name Description
amount - Money! The costs of this shipping method
description - String Additional information
freeShipping - Boolean! true if a free shipping promotion is applied to the cart, false otherwise
name - String! Name of the shipping method
shipperId - String! The ID for the shipper used as shipperId in ShippingMethodInput
Example
{
  "amount": Money,
  "description": "abc123",
  "freeShipping": false,
  "name": "abc123",
  "shipperId": "xyz789"
}

ShippingMethodInput

Description

The shipping method information

Fields
Input Field Description
shipperId - String! The ID of the shipper of the order
Example
{"shipperId": "xyz789"}

ShippingMethodProblem

Description

The selected shipping method and the current cart are not compatible

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

shipperId - String Provided shipper ID (see shipperId of ShippingMethod)
Example
{
  "message": "xyz789",
  "shipperId": "abc123"
}

ShopGlobalParameters

Description

Collection of non-core global parameters

Fields
Field Name Description
benefitHeader - String Return the HTML for the benefit header
campaignHeader - String Return the HTML for the campaign header
productsPerPage - Int! Return the number of products per page
productsPerSearchPage - Int! Return the number of products per search page
Example
{
  "benefitHeader": "xyz789",
  "campaignHeader": "xyz789",
  "productsPerPage": 123,
  "productsPerSearchPage": 123
}

SliderTeaser

Description

A slider teaser
This teaser type is activated by default.

Fields
Field Name Description
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
tabs - [SliderTeaserTab]! A ordered list of SliderTeaserTabs
Example
{
  "meta": TeaserMeta,
  "name": "xyz789",
  "tabs": [SliderTeaserTab]
}

SliderTeaserTab

Description

Single tab of a SliderTeaser

Fields
Field Name Description
headline - String The headline of this tab
image - LinkedImage! A linked image
name - String The name of this tab
subHeadline - String The sub headline or text of this tab
textColor - String The Color of the (sub) headline
trackingInfo - String Additional Tracking information
Example
{
  "headline": "abc123",
  "image": LinkedImage,
  "name": "abc123",
  "subHeadline": "xyz789",
  "textColor": "abc123",
  "trackingInfo": "abc123"
}

SortOrder

Description

Sort orders

Values
Enum Value Description

ASC

Ascending order

DESC

Descending order
Example
"ASC"

SpecialPriceBenefit

Description

A special price benefit

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
max - Int! The maximum number of selectable items for this benefit
skus - [String!]! List of SKUs of selectable items
title - String The title of the benefit maintained in the back office
Example
{
  "image": Image,
  "max": 987,
  "skus": ["abc123"],
  "title": "abc123"
}

SpecialPriceInfo

Description

" Information about special price items if a special price benefit can be applied
It provides a list of the selectable and selected special price items.

Fields
Field Name Description
image - Image The image of the special price promotion
max - Int! The maximum number of selectable items with a special price
promotion - Promotion The related promotion
promotionReference - ID! The promotion reference
selectableItems - [SpecialPriceItem]! List of items with a special price to choose from
selectedItems - [SpecialPriceItem]! List of items with a special price selected by the user
title - String The display title of the special price promotion
Example
{
  "image": Image,
  "max": 123,
  "promotion": Promotion,
  "promotionReference": "4",
  "selectableItems": [SpecialPriceItem],
  "selectedItems": [SpecialPriceItem],
  "title": "abc123"
}

SpecialPriceItem

Description

A promotion item with a special price (used in SpecialPriceInfo)

Fields
Field Name Description
item - Item! The related item
specialPrice - Money! The special price for the item
Example
{
  "item": Item,
  "specialPrice": Money
}

StartSessionEvent

Description

Start session event

Fields
Input Field Description
ip - String! The (anonymized) IP address
referrer - String The URL the user came from
url - String! The relative URL of the first page viewed by the user
Example
{
  "ip": "xyz789",
  "referrer": "abc123",
  "url": "xyz789"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

StringListAttribute

Description

Backend types 'StringList', 'MultiStringSelector' and 'ColorList' which are a list of texts

Fields
Field Name Description
name - String! The name of this attribute
texts - [String!]! List of text values of this attribute
Example
{
  "name": "abc123",
  "texts": ["xyz789"]
}

TabAttribute

Description

A single (teaser) tab

Fields
Field Name Description
attributes - [ContentAttribute]! List of attributes of this tab (e.g. text fields, links or images)
name - String! The name of this attribute, which is the index of the tab (starting with 0)
trackingInfo - String Tracking information automatically attached to links in this tab
Example
{
  "attributes": [ContentAttribute],
  "name": "xyz789",
  "trackingInfo": "xyz789"
}

TabsAttribute

Description

Backend type 'Tab' commonly used as a list of tabs in a teaser

Fields
Field Name Description
name - String! The name of this attribute
tabs - [TabAttribute]! List of single tabs
Arguments
ids - [Int!]

Indices of tabs to select (starting with 0)
If no indices are set, all tabs are returned.
Default: no indices are set

Example
{
  "name": "abc123",
  "tabs": [TabAttribute]
}

TakeAndPayBenefit

Description

Take & Pay benefit (e.g. Take 3 and get 1 for free)

Fields
Field Name Description
image - Image The image of the benefit maintained in the back office
oncePerOrder - Boolean! true if the benefit is only applicable once per order
title - String The title of the benefit maintained in the back office
youPay - Int! Number of items you have to pay for
youTake - Int! Number of items you take
Example
{
  "image": Image,
  "oncePerOrder": false,
  "title": "abc123",
  "youPay": 987,
  "youTake": 987
}

TeaserAttribute

Description

Base type for all teaser types (e.g. HtmlTeaser)
A teaser can contain one or more TeaserSnippets.

Fields
Field Name Description
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
Example
{
  "meta": TeaserMeta,
  "name": "xyz789"
}

TeaserClickEvent

Description

Teaser click event

Fields
Input Field Description
teaserId - ID! Name of the teaser
Example
{"teaserId": 4}

TeaserMeta

Description

Common teaser information

Fields
Field Name Description
teaserName - String Optional name of teaser
templateName - String! The name of the template that is used to control the same teaser in different designs in the frontend
trackingInfo - String Tracking information automatically attached to links in this teaser (unless this teaser is a tab teaser)
Example
{
  "teaserName": "abc123",
  "templateName": "xyz789",
  "trackingInfo": "abc123"
}

TeaserSnippet

Description

A teaser snippet, which is a teaser that can be used within another teaser
A placeholder with the following format is used for a teaser snippet used in a teaser: $[teaserSnippetName]
You need to parse the rendered teaser in the frontend for these placeholders. A rendered HTML teaser with a teaser snippet can look like this:

Text of the teaser with this teaser snippet: $[teaserSnippetName]
Fields
Field Name Description
name - String! The name of this teaser snippet
teaser - TeaserAttribute! The teaser, which itself could contain a teaser snippet
Example
{
  "name": "abc123",
  "teaser": TeaserAttribute
}

TextAttribute

Description

Backend types 'Text', 'LongText', 'HtmlText', 'ComboBox' and 'ComboBoxWithDefault' which are simple text types

Fields
Field Name Description
name - String! The name of this attribute
text - String! Text value of this attribute
Example
{
  "name": "xyz789",
  "text": "abc123"
}

TextFormat

Description

Available text formats

Values
Enum Value Description

HTML

HTML formatted text

PLAIN

Plain text
Example
"HTML"

TextImageTeaser

Description

An image link teaser with additional text
This teaser type is activated by default.

Fields
Field Name Description
headline - String The headline of this teaser
image - LinkedImage! A linked image
meta - TeaserMeta! Information common to all teasers
name - String! The name of this attribute
subHeadline - String The sub headline of this teaser
Example
{
  "headline": "xyz789",
  "image": LinkedImage,
  "meta": TeaserMeta,
  "name": "abc123",
  "subHeadline": "abc123"
}

TopSearchSuggest

Description

Search term suggestion (e.g. 'shoes' for 'sho')

Fields
Field Name Description
searchTerm - String! Suggested search term (e.g. 'shoes')
totalCount - Int! Number of search hits for search term
Example
{"searchTerm": "abc123", "totalCount": 987}

TouchpointEvent

Description

Touchpoint event

Fields
Input Field Description
parameters - [ParameterInput!] The request parameters of current page
referrer - String The referrer url
url - String! The relative url of current page
Example
{
  "parameters": [ParameterInput],
  "referrer": "xyz789",
  "url": "xyz789"
}

TrackingEventInput

Description

List of tracking events to be triggered

Fields
Input Field Description
addToBasket - AddToBasketEvent Event to track when the user adds a product to the cart
addToWishlist - AddToWishlistEvent Event to track when the user adds a product to the wishlist
categoryFilter - CategoryFilterEvent Event to track user initiated filtering on a category page
categoryLandingPageView - CategoryLandingPageViewEvent Event to track view of category landing page (category without a product list)
categoryProductListView - CategoryProductListViewEvent Event to track view of category page with a product list
checkout - CheckoutEvent Event to track each step during checkout to create a checkout funnel
contentView - ContentViewEvent Event to track all page views that not have their own event (e.g. maintained pages like homepage, landing pages, content tree pages like imprint)
information - InformationEvent Event to track start of a non-bot user session
When starting a new session, use mutation tracking_init instead.
interest - InterestEvent Event to track an interest of a user
"Standard" interests for products and categories are already tracked in the appropriate events (e.g. ProductViewEvent, AddToBasketEvent, CategoryProductListViewEvent).
itemView - ItemViewEvent Event to track item view that used for used for recently viewed articles
Should be triggered on item variation change on product detail page.
order - OrderEvent Event to track when a user successfully places an order
productView - ProductViewEvent Event to track product view that is used for recommendations, calculation user interests and recently viewed products
Should be triggered on initial product detail page view.
removeFromBasket - RemoveFromBasketEvent Event to track when the user removes a product from the cart
removeFromWishlist - RemoveFromWishlistEvent Event to track when the user removes a product from the wishlist
search - SearchEvent Event to track user initiated search
Should only be triggered for first search results page.
searchFilter - SearchFilterEvent Event to track user initiated filtering on a search result page
startSession - StartSessionEvent Event to track start of user session
Should be triggered before any other event.
When starting a new session, use mutation tracking_init instead.
teaserClick - TeaserClickEvent Event to track when a user clicks a teaser
touchpoint - TouchpointEvent Event to track touchpoints
Should be triggered before any other event in every request.
When starting a new session, use mutation tracking_init instead.
userLogin - UserLoginEvent Event to track user login
userLogout - UserLogoutEvent Event to track user logout
Example
{
  "addToBasket": AddToBasketEvent,
  "addToWishlist": AddToWishlistEvent,
  "categoryFilter": CategoryFilterEvent,
  "categoryLandingPageView": CategoryLandingPageViewEvent,
  "categoryProductListView": CategoryProductListViewEvent,
  "checkout": CheckoutEvent,
  "contentView": ContentViewEvent,
  "information": InformationEvent,
  "interest": InterestEvent,
  "itemView": ItemViewEvent,
  "order": OrderEvent,
  "productView": ProductViewEvent,
  "removeFromBasket": RemoveFromBasketEvent,
  "removeFromWishlist": RemoveFromWishlistEvent,
  "search": SearchEvent,
  "searchFilter": SearchFilterEvent,
  "startSession": StartSessionEvent,
  "teaserClick": TeaserClickEvent,
  "touchpoint": TouchpointEvent,
  "userLogin": UserLoginEvent,
  "userLogout": UserLogoutEvent
}

Translation

Description

A single translation

Fields
Field Name Description
key - String! The translation key
value - String! The translation for the current MultiChannelSelector
Example
{
  "key": "abc123",
  "value": "abc123"
}

TranslationFilter

Description

Filter to select translations by translation key

Fields
Input Field Description
keyPrefix - String! Prefix with which the keys of the translations should begin
Example
{"keyPrefix": "xyz789"}

Translations

Description

A list of translations

Fields
Field Name Description
totalCount - Int! Total number of translations
translations - [Translation]! List of translations for the current MultiChannelSelector
Example
{"totalCount": 987, "translations": [Translation]}

UpdateCartInput

Description

Operations to update a cart

Fields
Input Field Description
cartId - ID

The ID of the cart to update (see ìd of Cart)

If left out it will try to use the best one or create a new one if none exists.

ops - [UpdateCartOperation!]! Update operations on cart
Example
{"cartId": 4, "ops": [UpdateCartOperation]}

UpdateCartOperation

Description

The possible update operations on a cart.

As long as there are no unions of input types, we need to define inputs that behave like unions. Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
attributeOp - AttributeOperation Operations on cart related attributes
positionOp - PositionOperation Operations on cart positions
resetShippingAddress - Boolean Clears the shipping address of the cart
setActive - SetActive

Sets the cart as active

There can be only one active cart. If a cart is set as active, all other carts are deactivated.

setBillingAddress - SetBillingAddress Sets a billing address for the cart
setDefault - SetDefault

Sets the cart as default

There can only be one default cart. If a cart is set as default, all other carts are set to false.

setGuestId - SetGuestId

Sets the ID of the guest user

This ID is required for a guest checkout (usually the email address).

setName - SetName Sets the name of the cart
setPaymentMethod - SetPaymentMethod Sets the payment method for the cart
setShippingAddress - SetShippingAddress Sets a shipping address for the cart
setShippingMethod - SetShippingMethod Sets the shipping method for the cart
voucherOp - VoucherOperation Operations on vouchers
Example
{
  "attributeOp": AttributeOperation,
  "positionOp": PositionOperation,
  "resetShippingAddress": true,
  "setActive": SetActive,
  "setBillingAddress": SetBillingAddress,
  "setDefault": SetDefault,
  "setGuestId": SetGuestId,
  "setName": SetName,
  "setPaymentMethod": SetPaymentMethod,
  "setShippingAddress": SetShippingAddress,
  "setShippingMethod": SetShippingMethod,
  "voucherOp": VoucherOperation
}

UpdateCartProblem

Description

Problem when updating an existing cart or creating a new cart

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "xyz789"}

UpdateCartProblems

Description

An aggregation of problems occurred when updating an existing cart or creating a new cart

Fields
Field Name Description
problems - [UpdateCartProblem]! List of problems encountered
Example
{"problems": [UpdateCartProblem]}

UpdateCartResult

Description

Result type when updating a cart or creating a new cart

Example
UpdateCartProblems

UpdateCartSuccess

Description

Type for successfully updating a cart

Fields
Field Name Description
cart - Cart! The updated cart
Example
{"cart": Cart}

UpdateCustomerInput

Description

Operations to update a customer

Fields
Input Field Description
ops - [UpdateCustomerOperation!]! Update operations on customer
Example
{"ops": [UpdateCustomerOperation]}

UpdateCustomerOperation

Description

The possible update operations on a customer
As long as there are no unions of input types, we need to define inputs that behave like unions. Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
addPhoneNo - AddPhoneNo Adds a phoneNo to the customer phone list
addShippingAddress - AddShippingAddress Adds a shipping address to the address book
deletePhoneNo - DeletePhoneNo Deletes a phone number from the customer phone list
deleteShippingAddress - DeleteShippingAddress Deletes a shipping address from the address book
setBillingAddress - SetBillingAddress Sets a billing address for a customer
setBirthDate - SetBirthDate Sets the date of birth for a customer
setCompany - SetCompany Sets the customer's company
setDefaultShippingAddress - SetDefaultShippingAddress Sets the default shipping address for a customer
setFirstname - SetFirstname Sets the first name for a customer
setLastname - SetLastname Sets the last name for a customer
setSalutation - SetSalutation Sets a salutation for a customer
setTitle - SetTitle Sets a title for a customer
Example
{
  "addPhoneNo": AddPhoneNo,
  "addShippingAddress": AddShippingAddress,
  "deletePhoneNo": DeletePhoneNo,
  "deleteShippingAddress": DeleteShippingAddress,
  "setBillingAddress": SetBillingAddress,
  "setBirthDate": SetBirthDate,
  "setCompany": SetCompany,
  "setDefaultShippingAddress": SetDefaultShippingAddress,
  "setFirstname": SetFirstname,
  "setLastname": SetLastname,
  "setSalutation": SetSalutation,
  "setTitle": SetTitle
}

UpdateCustomerProblem

Description

Problem when updating customer data

Fields
Field Name Description
message - String! The message to display
This is usually the message code for translation.
Possible Types
UpdateCustomerProblem Types

AccountAddressValidationProblem

Example
{"message": "xyz789"}

UpdateCustomerProblems

Description

An aggregation of problems occurred when updating customer data

Fields
Field Name Description
problems - [UpdateCustomerProblem]! List of problems encountered
Example
{"problems": [UpdateCustomerProblem]}

UpdateCustomerResult

Description

Result type when updating customer data

Example
UpdateCustomerProblems

UpdateCustomerSuccess

Description

Type for successfully updating customer data

Fields
Field Name Description
customer - Customer! The updated customer
Example
{"customer": Customer}

UpdatePositionInput

Description

Operation to update a position

Fields
Input Field Description
attributeOp - AttributeOperation Operations on position related attributes
positionId - ID! The ID of the position to update
setItemId - SetItemId The item ID
setQuantity - SetQuantity The item quantity
Example
{
  "attributeOp": AttributeOperation,
  "positionId": "4",
  "setItemId": SetItemId,
  "setQuantity": SetQuantity
}

UpdateQuantity

Description

Operation to add an amount to the quantity field

Fields
Input Field Description
quantity - Int The amount to add. Default = 1
Example
{"quantity": 987}

UpdateReview

Description

Operations to update review

Fields
Input Field Description
id - ID! The ID of the rating to be updated
ops - [UpdateReviewOperation!]! Operations to update the review
Example
{"id": 4, "ops": [UpdateReviewOperation]}

UpdateReviewOperation

Description

Operation to update a review

Fields
Input Field Description
setReviewHelpful - SetReviewHelpful! Operation to set whether this review is helpful
Example
{"setReviewHelpful": SetReviewHelpful}

UpdateWishlistInput

Description

Operations to update a wishlist

Fields
Input Field Description
ops - [UpdateWishlistOperation!]! Update operations on wishlist
wishlistId - ID

The ID of the wishlist to update (see id of Wishlist)

If left out it will try to use the best one or create a new one if none exists.

Example
{
  "ops": [UpdateWishlistOperation],
  "wishlistId": "4"
}

UpdateWishlistOperation

Description

The possible update operations on a wishlist

As long as there are no unions of input types, we need to define inputs that behave like unions. Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
addItem - AddItemToWishlist Adds a new item
addProduct - AddProductToWishlist Adds a new product
removePosition - DeletePosition Removes a position
Example
{
  "addItem": AddItemToWishlist,
  "addProduct": AddProductToWishlist,
  "removePosition": DeletePosition
}

UpdateWishlistProblem

Description

Problem when updating an existing wishlist or creating a new wishlist

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

UpdateWishlistProblems

Description

An aggregation of problems occurred when updating an existing wishlist

Fields
Field Name Description
problems - [UpdateWishlistProblem]! List of problems encountered
Example
{"problems": [UpdateWishlistProblem]}

UpdateWishlistResult

Description

Result type when updating a wishlist

Example
UpdateWishlistProblems

UpdateWishlistSuccess

Description

Type for successfully updating a wishlist

Fields
Field Name Description
wishlist - Wishlist! The updated wishlist
Example
{"wishlist": Wishlist}

UrlFilter

Description

URL specification

Fields
Input Field Description
absolute - Boolean! true if URL should be absolute
Default: false. Default = false
secure - Boolean! true if https should be used
Default: true. Default = true
Example
{"absolute": false, "secure": true}

UserLoginEvent

Description

User login event

Fields
Input Field Description
customerNumber - String! The customer number of the user
firstName - String The first name of the user
lastName - String The last name of the user
registrationType - RegistrationTypeInput! The user type (REGISTERED or GUEST)
Default: REGISTERED. Default = REGISTERED
salutation - String The salutation
Example
{
  "customerNumber": "xyz789",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "registrationType": "GUEST",
  "salutation": "abc123"
}

UserLogoutEvent

Description

User log out event

Fields
Input Field Description
_ - Boolean Unused field that can be ignored
Example
{"_": true}

ValueWithUnit

Description

A product/item attribute value with unit

Fields
Field Name Description
images - [Image]! List of images to visualize this attribute value
unit - String! Unit of value (e.g. 'cm')
value - String! The value (e.g. '10')
Example
{
  "images": [Image],
  "unit": "abc123",
  "value": "xyz789"
}

ValueWithUnitAttribute

Description

Standard item attribute value including unit (e.g. length)

Fields
Field Name Description
displayName - String! The display name of this attribute (e.g. 'length')
If not defined, this is an empty string.
displayValue - String! The value of this attribute
name - String! The name of this attribute (e.g. 'import:length') Deprecated, this will be deleted without replacement in the future. No longer supported
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
unit - String! Unit of attribute value (e.g. centimeter)
values - [ValueWithUnit]! List of values of this attribute
If there is only one value, it is the same as displayValue and unit (including visualizing images).
Example
{
  "displayName": "xyz789",
  "displayValue": "xyz789",
  "name": "abc123",
  "sequenceNo": 123,
  "unit": "xyz789",
  "values": [ValueWithUnit]
}

ValueWithUnitFeature

Description

Standard product feature value including unit (e.g. length)

Fields
Field Name Description
displayName - String! The display name of this feature
If not defined, this is an empty string.
images - [Image]! List of images to visualize feature
name - String! The name of this feature
Deprecated, this will be deleted without replacement in the future. No longer supported
sequenceNo - Int Sequence number to sort this attribute into a list of attributes
unit - String! Unit of feature value (e.g. centimeter)
value - String! The value of this feature
values - [ValueWithUnit]! List of values of this attribute
If there is only one value, it is the same as value, unit and images.
Example
{
  "displayName": "xyz789",
  "images": [Image],
  "name": "abc123",
  "sequenceNo": 987,
  "unit": "abc123",
  "value": "abc123",
  "values": [ValueWithUnit]
}

Video

Description

A video (e.g. for product detail page)

Fields
Field Name Description
fileName - String! The file name of this video
url - String! Absolute URL of this video
Example
{
  "fileName": "xyz789",
  "url": "xyz789"
}

VoucherCodeStatus

Description

The list of possible voucher statuses

Values
Enum Value Description

ATTAINABLE

The voucher code is attainable

INVALID

The voucher code is invalid

VALID

The voucher code is valid
Example
"ATTAINABLE"

VoucherOperation

Description

The possible voucher operations on a cart.

As long as there are no unions of input types, we need to define inputs that behave like unions.

Therefore, every operation on this input is exclusive. This means that only one operation can be set at a time.

Fields
Input Field Description
addVoucher - AddVoucher Adds a voucher code
removeVoucher - DeleteVoucher Removes a voucher code
Example
{
  "addVoucher": AddVoucher,
  "removeVoucher": DeleteVoucher
}

VoucherProblem

Description

A voucher could not be applied to the current cart

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

voucherCode - String The provided voucher code
Example
{
  "message": "xyz789",
  "voucherCode": "xyz789"
}

Wishlist

Description

A wishlist of a user

Fields
Field Name Description
createdAt - DateTime! Creation date of this wishlist
entries - [WishlistEntry!]! All positions of this wishlist
id - ID! The ID of this wishlist
name - String! The name of this wishlist
Example
{
  "createdAt": "2007-12-03T10:15:30Z",
  "entries": [WishlistEntry],
  "id": "4",
  "name": "xyz789"
}

WishlistEntry

Description

A wishlist position

Fields
Field Name Description
creationTime - DateTime Creation date of this position
id - ID!

The ID of this position

Needed for mutations (see DeletePosition)

item - Item

The item of this position

Can be null if product is set instead.

product - Product

The product of this position

Can be null if item is set instead.

valid - Boolean! Product/item is valid
A product can become invalid if, for example, it is sold out or is no longer in the assortment.
Example
{
  "creationTime": "2007-12-03T10:15:30Z",
  "id": 4,
  "item": Item,
  "product": Product,
  "valid": true
}

WishlistToCartProblem

Description

Problem when moving all positions from a wishlist to a cart

Fields
Field Name Description
message - String!

The message to display

This is usually the message code for translation.

Example
{"message": "abc123"}

WishlistToCartProblems

Description

An aggregation of problems occurred when moving all positions from a wishlist to a cart

Fields
Field Name Description
problems - [WishlistToCartProblem] List of problems encountered
Example
{"problems": [WishlistToCartProblem]}

WishlistToCartResult

Description

Result type moving positions from a wishlist to a cart

Example
WishlistToCartProblems

WishlistToCartSuccess

Description

Type for successfully moving positions from a wishlist to a cart

Fields
Field Name Description
cart - Cart! The updated cart
Example
{"cart": Cart}