Question 1: Which of the following statements about Product Types is true? (Select one)
a. Product types cannot be deleted if they are referenced by a product.
b. Product types cannot be edited if they are referenced by a product.
c. Product types contain references to all the products using them.
d. Products can belong to multiple product types.
Answer: a. Product types cannot be deleted if they are referenced by a product.
Explanation: Product types cannot be deleted if a product refers to them. This ensures data integrity in the product catalogue.
Question 2: Which of the following is NOT used to extend the data model in commercetools? (Select one)
a. API Extensions
b. Custom Fields
c. Types
d. Custom Objects
Answer: a. API Extensions
Explanation: API Extensions in commercetools are used to extend the functionality of the API, not the data model. Custom fields, Types, and Custom objects are used to extend the data model.
Question 3: All OAuth 2.0 clients and access tokens have a scope. Which of the following statements about scope is true? (Select one or more)
a. Scope is redefined for the API client if your application requirements change.
b. Scopes are defined for a single project when creating an API Client.
c. If you omit the scope parameter when requesting an access token, the access token is granted read-only scope.
d. manage_project scope grants permission to use all APIs for the specified Project
Answer: b. Scopes are defined for a single project when creating an API Client.
Explanation: Scopes define the permissions for an API client and are specific to a project. The manage_project scope allows access to all APIs for the specified project.
Question 4: What is true about the Missing Data endpoint in Machine Learning API? (Select one)
a. Can be used to implement auto-complete functionality
b. This feature is part of the Product Projections Search
c. Allows you to query for and update missing data
d. Can be used to query for products found to be missing Attributes, Images, and Prices
Answer: d. Can be used to query for products found to be missing Attributes, Images, and Prices
Explanation: The Missing Data endpoint in the Machine Learning API can be used to query products that are missing certain elements like attributes, images, and prices.
Question 5: Cart updates trigger a recalculation on the cart to up-to-date prices, taxes, and discounts etc. Is it possible to prevent carts from being modified by changes to prices and discounts? (Select one)
a. Yes, you can freeze the cart.
b. Yes, but a cart can't be ordered if not up-to-date.
c. Yes, you can set updateProductData field to false.
d. No, a cart in Active state can't skip the updates.
With this, usual price and discount updates are primarily not applied on frozen Carts. This new feature is useful if you want to prevent Carts from being modified by changes affecting prices until the order is placed. Inventory is not reserved by freezing a Cart.
Question 6: Suppose you have a cart with version = 100. If one or more line items are added to that cart, what is true of the version number after the successful update? (Select one)
a. version >= 101
b. version = 100
c. version >= 100
d. version = 101
Answer: a. version >= 101
Explanation: The version number in commercetools increases with each successful update. If line items are added to the cart, and the update is successful, the version number will be at least 101, as the version increments by at least 1 for each update operation. The exact increment could be more than 1 depending on the number and nature of the changes made in a single update operation.
Question 8: Suppose you have defined a multi-buy discount "Buy Two, Get One Free“, including the fields triggerQuantity, discountedQuantity, and maxOccurrence. If a customer has 10 of the eligible products in their cart, how many free items will the customer receive?
Options:
a. It depends on how “maxOccurence” was defined
b. The discount will be applied three times, for three free items
c. The discount will only be applied once, for one free item
d. It depends on how "discountedQuantity" was defined
How the Multi-Buy Discount Works:
In a "Buy Two, Get One Free" discount, each application of the discount requires a triggerQuantity of 2 and offers a discountedQuantity of 1. This means that for every 2 items, 1 free item is given.
For a cart with 10 eligible items, the discount could potentially be applied 5 times (10 items divided into groups of 2 with 1 free item each).
Role of maxOccurrence:
maxOccurrence
The maxOccurrence field limits the number of times the discount can be applied. If it’s set to a specific number, that will cap how many free items are granted.
If maxOccurrence is not defined (or is set to unlimited), the discount will apply as many times as the eligible items allow.
Question 9: What will happen if you add a new, required attribute to a product type that is already in use?
a. You will receive an error, as it is not possible to create a required attribute if the product type is already in use.
b. The required attribute will be added to all product variants of that type, and a value must be set in the next modification of the variant.
c. The required attribute will be added to all product variants of that type, and it will be required only for new variants going forward.
d. The required attribute will be added to all product variants of that type with a default value.
Erklärung:
Wenn du ein neues, erforderliches Attribut zu einem Produkttyp hinzufügst, wird es allen bestehenden Produktvarianten dieses Typs hinzugefügt. Allerdings wird dieses Attribut für alle Varianten als erforderlich markiert, sodass bei der nächsten Modifikation der Variante ein Wert für dieses Attribut gesetzt werden muss. Die bestehenden Varianten erhalten jedoch kein automatisch gesetztes Standardwert für das neue Attribut, sodass es explizit gesetzt werden muss, um den Produkttyp weiterhin gültig zu halten.
a. You will receive an error, as it is not possible to create a required attribute if the product type is already in use. – Diese Antwort ist falsch. Du kannst ein erforderliches Attribut zu einem bestehenden Produkttyp hinzufügen, aber die bestehenden Varianten müssen das Attribut bei der nächsten Modifikation mit einem Wert versehen.
c. The required attribute will be added to all product variants of that type, and it will be required only for new variants going forward. – Diese Antwort ist ebenfalls falsch, weil das neue erforderliche Attribut sofort auf alle bestehenden Varianten angewendet wird, nicht nur auf neue Varianten.
d. The required attribute will be added to all product variants of that type with a default value. – Auch diese Antwort ist falsch, da das neue Attribut nicht automatisch mit einem Standardwert versehen wird. Es muss explizit gesetzt werden, andernfalls wird es als erforderlich markiert.
Question 10: What does SKU stand for, and what is its purpose?
a. Stock Keeping Unit: used for inventory tracking
b. Shipping Key URL: used to track shipped items
c. Secret Key Update: used to update API clients
d. System Knowledge User: used to define project permissions
SKU (Stock Keeping Unit) ist eine eindeutige Kennzeichnung, die für die Verwaltung von Beständen in der Lagerhaltung verwendet wird. Es handelt sich dabei um eine alphanumerische Zeichenfolge, die jedes Produkt oder jede Produktvariante innerhalb eines Lagerbestands eindeutig identifiziert. SKUs werden verwendet, um Produkte zu verfolgen, Bestände zu verwalten und den Verkauf sowie die Nachbestellung zu organisieren.
Question 11: The rating field of a review is a number between:
a. -100 and 100
b. 1 and 10
c. 0 and 1
d. It is user-defined
Das Rating-Feld kann auf einer Skala von -100 bis 100 liegen, und die genaue Bedeutung hängt davon ab, wie das System das Rating interpretiert.
Question 12: As a best practice, when is it recommended to create a cart for a customer?
a. The customer signs into your website
b. The customer adds their first item to Cart
c. The customer is ready to check out
d. The customer arrives at your website
Es wird empfohlen, einen Warenkorb für einen Kunden zu erstellen, sobald dieser das erste Produkt hinzufügt. Auf diese Weise kannst du den Warenkorb spezifisch für den Kunden verwalten und verfolgen, was sie in ihren Warenkorb gelegt haben, während sie ihre Einkäufe fortsetzen.
Question 13: How can you add functionality you need for your business into the Merchant Center? For example, viewing carts.
a. Custom Applications
b. Custom Objects
c. API Extensions
d. State Machines
Custom Applications bieten eine Möglichkeit, die Funktionalität des Merchant Centers zu erweitern. Sie ermöglichen es Unternehmen, benutzerdefinierte Benutzeroberflächen zu entwickeln und in das Merchant Center zu integrieren, um spezifische Geschäftsanforderungen zu erfüllen – wie das Ansehen von Warenkörben oder anderen, auf das Geschäft abgestimmten Funktionen.
Custom Objects sind nützlich, um benutzerdefinierte Daten zu speichern, die nicht in das Standard-Datenmodell passen, bieten aber keine direkten UI-Erweiterungen innerhalb des Merchant Centers.
API Extensions erlauben zwar das Modifizieren und Validieren von API-Antworten, dienen jedoch nicht zur Erweiterung der Benutzeroberfläche im Merchant Center.
State Machines sind ideal, um benutzerdefinierte Workflows und Status für verschiedene Objekte wie Bestellungen oder Produkte zu erstellen, bieten jedoch ebenfalls keine direkte Integration in das Merchant Center UI.
Question 14: Which of the following statements about categories is FALSE?
a. Categories must have a parent.
b. Categories know all their ancestors.
c. Categories have a parent field and do not have a child field.
d. Categories can only have one parent.
Diese Aussage ist falsch, da Kategorien keine Elternkategorie haben müssen. Kategorien können eigenständig existieren und brauchen keine übergeordnete Kategorie.
Question 15: What is the default priceMode on products?
a. Embedded
b. Standalone
c. External
d. Platform
Der Standardwert für das priceMode auf Produkten in commercetools ist "Embedded". Das bedeutet, dass Preise direkt im Produkt eingebettet sind und für jede Produktvariante eine Preisdefinition vorhanden ist.
priceMode
Question 16: For a cart discount with stackingMode set to "Stacking", which of the following is true?
a. "stacking" discounts cannot include gift line items (i.e. free gifts)
b. The discount will be applied according to the sort order
c. This will be the only discount applied to the cart
d. No more discounts will be applied after the "stacking" discount
Explanation: When the stackingMode of a cart discount is set to "Stacking", multiple discounts can be applied to the cart, and they will be applied in the order specified by the sortOrder. The system will apply discounts based on this order, allowing multiple discounts to stack on top of each other.
stackingMode
sortOrder
a. "Stacking" discounts can include gift line items.
c. and d. are incorrect because "stacking" allows multiple discounts to be applied, so it won't be the only one applied, and other discounts can still be applied after the "stacking" discount.
Question 17: What monetary value is represented by the JSON object below?
{ "type": "highPrecision", "currencyCode": "USD", "centAmount": 6022, "preciseAmount": 602222, "fractionDigits": 4 }
a. $602222
b. $6022.22
c. $60.2222
d. $6022
Bei highPrecision-Werten repräsentiert preciseAmount den tatsächlichen Wert unter Berücksichtigung der fractionDigits.
preciseAmount
fractionDigits
In diesem Beispiel sind fractionDigits auf 4 gesetzt, was bedeutet, dass der Wert auf vier Nachkommastellen genau ist.
Der preciseAmount ist 602222, was mit vier Dezimalstellen als 60.2222 USD dargestellt wird.
Question 18: Which of the following requests will retrieve a product's information when executed on the response of apiRoot.execute?
a. .then(response => response.body)
b. .then(response => response.product)
c. .then(response => response.results)
d. .then(response => response.resource)
Erklärung: Bei der Ausführung einer Anfrage mit apiRoot.execute() enthält der Antwortkörper (response body) die Produktinformationen (oder andere Ressourcendaten, je nach Anfrage). In den meisten API-Antworten von commercetools sind die Produktdaten im Feld body enthalten.
apiRoot.execute()
body
b. .then(response => response.product) wäre nicht korrekt, es sei denn, die API-Antwort verwendet explizit product als Feld, was aber nicht der Standard ist.
.then(response => response.product)
product
c. .then(response => response.results) wird häufig in paginierten Antworten verwendet, ist aber nicht speziell für die Produktinformationen.
.then(response => response.results)
d. .then(response => response.resource) ist nicht das Standardfeld, um auf Produktinformationen in den meisten API-Antworten zuzugreifen.
.then(response => response.resource)
Deshalb ist .then(response => response.body) der zuverlässigste Weg, um auf die Produktdaten zuzugreifen.
.then(response => response.body)
Question 19: Assuming you have a valid categoryDraft, which of the following will create a new category in your project with key = projectKey?
a. apiRoot .withProjectKey({ projectKey }) .categories() .post(categoryDraft)
b. apiRoot .withProjectKey({ projectKey }) .categories() .post(body: categoryDraft) .execute();
c. apiRoot .withProjectKey({ projectKey }) .categories() .post(categoryDraft) .execute();
d. apiRoot .withProjectKey({ projectKey }) .categories() .post({ body: categoryDraft }) .execute();
Die post() Methode erwartet in der commercetools API einen Request-Body, der in einem Objekt als body-Feld übergeben wird. Das bedeutet, dass du bei der Verwendung von post() das categoryDraft als Wert für das body-Feld einfügen musst.
post()
categoryDraft
Question 21: When sending a search request, “markMatchingVariants” is disabled by default. What happens if you enable it?
a. The product variants that match the filter criteria from the search request are returned, and the rest are not.
b. The field “isMatchingVariant” is set to “false” on all variants that match the filter criteria from the search request.
c. The field “isMatchingVariant” is set to “true” on all variants that match the filter criteria from the search request.
d. The field “isMatchingVariant” is set to “true” on the first 200 variants that match the filter criteria.
Wenn markMatchingVariants aktiviert ist, wird bei allen Produktvarianten, die die Suchkriterien erfüllen, das Feld isMatchingVariant auf true gesetzt.
markMatchingVariants
isMatchingVariant
Bei anderen Varianten des gleichen Produkts, die nicht den Suchkriterien entsprechen, wird dieses Feld auf false gesetzt.
Das bedeutet, dass nur die Varianten, die den Suchkriterien entsprechen, mit isMatchingVariant: true gekennzeichnet werden, wodurch sie sich von anderen Varianten im Suchergebnis abheben.
isMatchingVariant: true
Question 20: The commercetools platform provides several Authorization flows. What is required to obtain an access token through the client credentials flow?
a. client_id, client_secret, username, and password
b. client_id, client_secret, and scope
c. client_id, client_secret, and a refresh token
d. client_id and client_secret
Der Client Credentials Flow wird verwendet, um ein Zugriffstoken für die Authentifizierung zu erhalten, ohne dass ein Benutzer explizit eingreifen muss. Dieser Flow ist besonders für serverseitige Anwendungen geeignet, die im Hintergrund auf die Plattform zugreifen.
Für den Client Credentials Flow benötigt man:
client_id: Die eindeutige Kennung des Clients, die vom commercetools-Backend vergeben wird.
client_secret: Ein geheimes Passwort, das zusammen mit der client_id verwendet wird, um den Client zu authentifizieren.
client_id
Question 22: True or false? The Product Projections API returns both, current and staged projections together.
a. TRUE
b. FALSE
GET
https://api.{region}.commercetools.com/{projectKey}/in-store/key={storeKey}/product-projections/{id}
Gets the current or staged representation of a Product by its ID in the specified Store. If the Store has defined some languages, countries, distribution, supply Channels, and/or Product Selection, they are used for projections based on locale, price, and inventory.
Question 23: Which of the following HTTP methods does the commercetools platform not support?
a. PUT
b. DELETE
c. POST
d. GET
Question 24: Which of the following fields are common between shopping lists and carts?
a. deleteDaysAfterLastModification
b. currency
c. textLineItems
d. anonymousId
Currency is only available in CartDraft and TextlineItems in Shopping Lists
Question 25: The number of fields in a resource will always be ________ the number of fields in its draft.
a. greater than
b. less than
c. twice
d. equal to
Ein Resource-Objekt enthält in der Regel zusätzliche Felder im Vergleich zu seinem Draft-Objekt. Das Draft-Objekt wird verwendet, um eine neue Ressource zu erstellen oder zu aktualisieren, und beinhaltet nur die erforderlichen Eingabefelder. Die endgültige Ressource enthält jedoch zusätzliche Felder wie IDs, Erstellungs- und Änderungszeitpunkte und andere Metadaten, die im Draft nicht vorhanden sind.
Question 26: Subscriptions can be used to execute a behavior ______ an API call succeeds, and API Extensions execute a behavior ______ an API call succeeds.
a. before, before
b. before, after
c. after, before
d. after, after
Subscriptions werden verwendet, um eine Aktion nachdem ein API-Aufruf erfolgreich war, auszuführen. Sie reagieren auf bestimmte Ereignisse und werden oft genutzt, um Systeme zu synchronisieren oder Benachrichtigungen zu senden, nachdem eine Operation abgeschlossen ist.
API Extensions hingegen führen eine Aktion bevor der API-Aufruf erfolgreich abgeschlossen ist, aus. Sie ermöglichen eine Validierung oder Modifikation der Anfrage und können die API-Operation beeinflussen, bevor sie endgültig ausgeführt wird.
Question 27: What is the best way to request support for the commercetools platform?
a. Write an email to support@commercetools.com
b. Use the support portal at support.commercetools.com
c. Email your point of contact
d. Call the commercetools office
Der Support für commercetools wird am effizientesten über das Support-Portal auf der Webseite support.commercetools.com angefordert. Dort können Benutzer gezielt nach Lösungen suchen, Tickets erstellen und ihren Support-Fall nachverfolgen.
Question 28: What is the purpose of the in production project flag?
a. Projects with in production flag set are covered by the SLA
b. Projects with in production flag set are granted more data storage
c. Changing the in production flag allows you to switch between dev and prod environments
d. Projects with in production flag set receive higher quality support
Das in production-Flag kennzeichnet Projekte, die produktiv genutzt werden, und stellt sicher, dass sie von der Service Level Agreement (SLA) abgedeckt sind. Dies bedeutet, dass Projekte mit diesem Flag eine garantierte Verfügbarkeit und Reaktionszeit des Support-Teams gemäß den SLA-Bestimmungen erhalten.
Question 29: It is possible to use external authorization tokens with the commercetools platform. True or false?
Es ist möglich, externe Autorisierungstoken mit der commercetools-Plattform zu verwenden. Dies wird typischerweise in Szenarien genutzt, in denen Sie eine externe Authentifizierungslösung verwenden (z. B. OAuth2 oder API-Token von Drittanbietern). Die commercetools-Plattform unterstützt die Verwendung solcher externen Tokens für den Zugriff auf die API, solange sie korrekt konfiguriert und verifiziert sind.
Die Verwendung externer Tokens kann besonders nützlich sein, wenn Sie eine benutzerdefinierte Authentifizierungslogik oder ein Identitätsmanagement-System in Verbindung mit commercetools einsetzen.
Question 30: With Discount Codes, it is possible to give specific Cart Discounts to eligible customers. What happens to Discount Codes that become invalid due to Cart Predicates not matching anymore?
a. When a cart is frozen, Discount Codes remain valid and applied.
b. When a cart is frozen, Discount Codes remain present on the cart with the DiscountCodeState DoesNotMatchCart.
c. Regardless of a cart freeze, Discount Codes remain present on the cart with the DiscountCodeState DoesNotMatchCart.
d. Invalid Discount Codes are automatically removed from Cart, except when the cart is frozen.
Wenn ein Rabattcode aufgrund nicht mehr erfüllter Warenkorb-Predikate ungültig wird, bleibt er im Warenkorb bestehen, allerdings mit dem Status DiscountCodeState DoesNotMatchCart. Dies bedeutet, dass der Rabattcode weiterhin sichtbar ist, aber nicht mehr angewendet wird, da die Bedingungen (Predicates) nicht mehr zutreffen. Der Status ändert sich also unabhängig davon, ob der Warenkorb "eingefroren" ist oder nicht.
DiscountCodeState DoesNotMatchCart
Question 31: Suppose a payment object goes through the following transactions:
transaction with type "Authorization", state "Success", amount 100 GBP
transaction with type “Charge”, state “Success”, amount 80 GBP
transaction with type "Charge", state "Pending", amount 20 GBP
transaction with type “Refund”, State “Success”, amount 40 GBP
transaction with type “Charge”, State “Failed”, amount 20 GBP
What amount was effectively collected from the customer in this payment process?
a. 80 GBP
b. 100 GBP
c. 40 GBP
d. 140 GBP
Authorization für 100 GBP – lediglich eine Genehmigung, keine Abbuchung.
Charge für 80 GBP (Success) – 80 GBP wurden erfolgreich abgebucht.
Charge für 20 GBP (Pending) – diese Abbuchung ist noch ausstehend und zählt nicht.
Refund für 40 GBP (Success) – 40 GBP wurden an den Kunden zurückerstattet.
Charge für 20 GBP (Failed) – diese Abbuchung ist fehlgeschlagen und zählt ebenfalls nicht.
Endbetrag: 80 GBP abgebucht - 40 GBP Rückerstattung = 40 GBP, die letztlich vom Kunden eingezogen wurden.
Question 32: What's true about the following response from /in-store/key=berlin-store/product-selection-assignments:
{
"limit" : 20,
"offset" : 0,
"count" : 1,
"results" : [{
"product": {
"typeId": "product",
"id": "f7188564-30db-4983-8f6e-58b895917665"
},
"productSelection": {
"typeId": "product-selection",
"id": "f33f40f9-464d-4ea2-924e-f56d4fae23cc"
"assignmentType": "exclusion"
}]
}
a. Product Selection "f33f40f9-464d-4ea2-924e-f56d4fae23cc" is active for the store.
b. Product Selection "f33f40f9-464d-4ea2-924e-f56d4fae23cc" is of type individualExclusion.
c. Product "f7188564-30db-4983-8f6e-58b895917665" is not available in the storefront of the store.
d. Product "f7188564-30db-4983-8f6e-58b895917665" is excluded from the Product Selection "f33f40f9-464d-4ea2-924e-f56d4fae23cc".
c: In der Antwort wird eine Zuordnung für das Produkt mit der ID f7188564-30db-4983-8f6e-58b895917665 zur Produktselektion f33f40f9-464d-4ea2-924e-f56d4fae23cc angezeigt, wobei der assignmentType auf "exclusion" gesetzt ist. Das bedeutet, dass das genannte Produkt von der Produktselektion ausgeschlossen ist und daher nicht im Schaufenster (Storefront) des Shops verfügbar ist.
f7188564-30db-4983-8f6e-58b895917665
f33f40f9-464d-4ea2-924e-f56d4fae23cc
Option d: „Product f7188564-30db-4983-8f6e-58b895917665 is excluded from the Product Selection f33f40f9-464d-4ea2-924e-f56d4fae23cc“ trifft zu, da der assignmentType auf „exclusion“ gesetzt ist. Dies bedeutet, dass das Produkt explizit aus dieser Produktselektion ausgeschlossen wurde.
assignmentType
Question 34: It is a best practice to specify a broad scope when creating API clients, to avoid having a large number of clients in a single project. True or False?
Begründung: Es ist keine Best Practice, einen breiten Scope (also weitreichende Berechtigungen) für API-Clients festzulegen. Stattdessen sollte der Scope so spezifisch wie möglich sein, um das Prinzip der minimalen Berechtigungen (Principle of Least Privilege) zu wahren. Dadurch wird sichergestellt, dass API-Clients nur Zugriff auf die Funktionen und Daten haben, die sie wirklich benötigen, was die Sicherheit erhöht.
Question 35: What happens if you try to create a Standalone Price with a non-existent sku?
a. It will result in ReferencedResourceNotFound error.
b. It will result in a staged Standalone Price.
c. It will result in InvalidJsonInput error.
d. It will result in a new Standalone Price.
Begründung: Wenn versucht wird, einen Standalone Price mit einer SKU zu erstellen, die nicht existiert, führt dies zu einem Fehler vom Typ ReferencedResourceNotFound. Dieser Fehler tritt auf, weil die SKU als Referenz für ein bestehendes Produkt erforderlich ist. Wenn die SKU im System nicht gefunden wird, kann der Standalone Price nicht erstellt werden, da die SKU nicht auf ein vorhandenes Produkt verweist.
Question 36: Which of the following correctly uses a query predicate to retrieve products with an attribute = "color"?
a. where: 'masterVariant(attributes(name = "color"))'
b. where({ masterVariant: { attributes: { name: "color"} } }
c. where(predicate: {{masterVariant{attributes{ name = "color"}}}
d. query(masterData(attributes(name = "color")))
Begründung: Die richtige Syntax für eine Query-Predicate-Abfrage bei commercetools verwendet where in Kombination mit einer genauen Angabe des Attributs. In diesem Fall gibt masterVariant(attributes(name = "color")) das korrekte Format an, um Produkte abzurufen, bei denen das Attribut color in der masterVariant vorhanden ist. Die anderen Optionen sind syntaktisch falsch oder verwenden ein falsches Format.
where
masterVariant(attributes(name = "color"))
color
masterVariant
Question 37: What is the purpose of adding a language to your project settings?
a. To change the language in which the Merchant Center UI is presented
b. To make Composable Commerce translate existing data into the new language
c. To automatically display the new language option in your shop's front-end selector
d. To enable the option to define localized product information
Begründung: Das Hinzufügen einer Sprache zu den Projekteinstellungen in commercetools ermöglicht es, produktspezifische Informationen in dieser Sprache zu definieren. Es wird damit eine Sprachoption geschaffen, um Produkte und andere Inhalte in mehreren Sprachen bereitzustellen. Die anderen Optionen beschreiben Funktionen, die nicht direkt durch das Hinzufügen einer Sprache zu den Projekteinstellungen beeinflusst werden.
Question 38: A product description is required to create a product. True or false?
Begründung: In commercetools ist eine Produktbeschreibung nicht zwingend erforderlich, um ein Produkt zu erstellen. Man kann ein Produkt ohne Beschreibung anlegen, da diese Angabe optional ist.
Question 39: True or false? You can use the JS SDK in a web browser, like Firefox.
Die richtige Antwort ist a. TRUE.
Begründung: Das commercetools JavaScript SDK kann in Webbrowsern wie Firefox verwendet werden. Es ist so konzipiert, dass es sowohl auf dem Server als auch im Browser funktioniert, sodass Entwickler API-Anfragen direkt aus dem Browser durchführen können.
Question 40: Which of the following update action arrays will successfully add a product to an existing cart when correctly posted?
a. const updateActions = [{action: 'addProductVariant',sku: SKU}]
b. const updateActions = [{action: 'addLineItem',version: VERSION}]
c. const updateActions = [{action: 'addLineItem',sku: SKU}]
d. const updateActions = [{action: 'addProductVariant',version: VERSION}]
Begründung: Um ein Produkt zu einem bestehenden Warenkorb hinzuzufügen, verwendet man die Aktion addLineItem. Diese Aktion erfordert die Angabe eines sku-Wertes (Stock Keeping Unit), um das spezifische Produkt eindeutig zu identifizieren. Die anderen Optionen sind entweder falsch benannt (addProductVariant ist keine gültige Aktion in diesem Kontext) oder fehlen wichtige Angaben.
addLineItem
sku
addProductVariant
Question 41: Provided that your cart’s shippingMode is Multiple, which Update Actions can be used on a Cart?
a. setShippingAddress setShippingMethod setLineItemShippingDetails
b. setCustomShippingMethod setCustomLineItemShippingDetails
c. addCustomShippingMethod setCustomLineItemShippingDetails
d. addItemShippingAddress addShippingMethod setLineItemShippingDetails
Die richtige Antwort ist d. addItemShippingAddress, addShippingMethod, setLineItemShippingDetails.
addItemShippingAddress
addShippingMethod
setLineItemShippingDetails
Begründung: Bei einem Warenkorb mit shippingMode auf Multiple können mehrere Versandadressen und -methoden festgelegt werden. Die Aktionen addItemShippingAddress, addShippingMethod und setLineItemShippingDetails unterstützen diese Flexibilität:
shippingMode
Multiple
addItemShippingAddress: Fügt eine zusätzliche Versandadresse hinzu, was bei mehreren Versandadressen nützlich ist.
addShippingMethod: Ermöglicht das Hinzufügen einer Versandmethode für einen der Versandadressen.
setLineItemShippingDetails: Setzt die spezifischen Versanddetails für einzelne Artikel im Warenkorb, um verschiedene Versandziele für verschiedene Artikel festzulegen.
Question 42: All Subscription payloads for CloudEventsFormat have a resource field which is a reference to the resource that triggered the message.
True
False
Die richtige Antwort ist True.
Begründung: In der CloudEventsFormat-Spezifikation für Subscriptions in commercetools enthalten alle Payloads ein resource-Feld. Dieses Feld verweist auf die Ressource, die das Event ausgelöst hat, und ermöglicht eine eindeutige Identifizierung des Ursprungs der Nachricht.
resource
Question 43: What do you need to be aware of when enabling “markMatchingVariants”?
a. The request might take a bit longer.
b. An update will be made to the matching resources.
c. Only the first 200 variants will be marked.
d. The request will be a bit faster.
Die richtige Antwort ist a. The request might take a bit longer.
Begründung: Wenn der Parameter markMatchingVariants aktiviert wird, wird für jede Produktvariante geprüft, ob sie mit der Suchanfrage übereinstimmt, und die Ergebnisse entsprechend markiert. Diese zusätzliche Verarbeitung kann die Antwortzeit verlängern, weshalb der Request möglicherweise etwas länger dauert.
Question 44: True or false? Cart predicates can be used to more precisely select the shipping method for a given cart.
Begründung: Cart-Predikate können verwendet werden, um die Auswahl der Versandmethode für einen bestimmten Warenkorb genauer festzulegen. Sie ermöglichen es, Bedingungen anzugeben, die erfüllt sein müssen, damit eine bestimmte Versandmethode auf den Warenkorb angewendet wird, wodurch die Auswahl präziser wird.
Question 45: Currency codes are free text strings and need to be written by the user in Project Settings. True or false?
Währungscodes sind standardisierte dreistellige Codes nach ISO 4217 (z. B. "USD" für US-Dollar, "EUR" für Euro). Sie sind keine freien Textstrings, die vom Benutzer eingegeben werden, sondern müssen den standardisierten Codes entsprechen, um korrekt verwendet zu werden.
Question 47: Suppose you have sent a correct request with bug-free client code and valid data. Which of the following HTTP error classes could still occur?
a. 401
b. 404
c. 400
d. 409
Alle genannten HTTP-Fehlerklassen könnten auch bei korrektem und fehlerfreiem Code auftreten, da sie andere Bedingungen als Programmierfehler widerspiegeln:
a. 401 (Unauthorized): Kann auftreten, wenn die Authentifizierung fehlt oder ungültig ist, obwohl die Anfrage sonst korrekt ist.
b. 404 (Not Found): Kann vorkommen, wenn die angeforderte Ressource nicht existiert, z. B. wenn ein bestimmtes Objekt nicht gefunden wird.
c. 400 (Bad Request): Wird ausgelöst, wenn Daten in der Anfrage fehlerhaft formatiert oder ungültig sind.
d. 409 (Conflict): Tritt auf, wenn es einen Konflikt mit dem aktuellen Status der Ressource gibt, etwa bei gleichzeitigen Bearbeitungen oder inkonsistenter Datenlage.
Die richtige Antwort könnte je nach Kontext variieren, aber alle genannten Fehler könnten auftreten, auch wenn der Code selbst fehlerfrei ist.
aber wohl a. (und b.?)
Question 48: Which of the following middlewares is recommended when setting up a client in the TypeScript SDK?
a. authMiddleware
b. httpMiddleware
c. loggerMiddleware
d. All of the above
When setting up a client in the commercetools TypeScript SDK, it's recommended to use all of these middlewares for a complete setup:
authMiddleware: Manages authentication by handling tokens.
httpMiddleware: Manages HTTP requests and responses.
loggerMiddleware: Helps in logging requests and responses, which is useful for debugging and monitoring.
Using all three ensures secure, efficient, and manageable communication with the API.
Question 49: What is true about Product Variants in commercetools?
a. Tax categories are modeled on variants
b. Product Variants represent a distinct SKU or sellable good.
c. Products contain Product Variants, and they all contain Product Attributes.
d. URL slugs, display names, and search keywords are modeled on variants
The correct answers are:
Explanation:
(b) is correct because each Product Variant in commercetools represents a unique SKU, distinguishing different sellable items within the same product.
(c) is correct as a Product in commercetools can have multiple Product Variants, each of which contains Product Attributes that define variant-specific details like size or color.
a and d are incorrect because tax categories, URL slugs, display names, and search keywords are modeled at the Product level, not the Variant level.
Question 50: Which of the following statements about filters and facets is FALSE?
a. Filters return terms created based on the attribute values of a product set
b. Following a search, facets can often appear as checkboxes in a left-hand navigation
c. Filters and facets work together to limit search results
d. Filters and facets are a powerful part of Product Projection Search
(a) ist falsch, weil Filter keine Begriffe auf Basis von Attributwerten zurückgeben. Filter werden verwendet, um Suchergebnisse basierend auf bestimmten Bedingungen (wie Preis, Kategorie usw.) einzugrenzen, während Facetten dazu dienen, attributbasierte Begriffe oder Werte anzuzeigen, die zur weiteren Eingrenzung der Ergebnisse verwendet werden können.
(b) ist richtig, weil nach einer Suche Facetten häufig als Kontrollkästchen in einer Navigation auf der linken Seite angezeigt werden, mit denen Benutzer die Suchergebnisse nach bestimmten Attributen filtern können.
(c) ist richtig, weil Filter und Facetten zusammenarbeiten, um die Suchergebnisse einzugrenzen. Facetten bieten die verfügbaren Optionen, um die Ergebnisse zu verfeinern, und Filter werden angewendet, um die angezeigten Produkte weiter zu reduzieren.
(d) ist richtig, weil Filter und Facetten tatsächlich leistungsstarke Werkzeuge in der Product Projection Search sind, die es den Benutzern erleichtern, spezifische Produkte zu finden.
Question 51: Cart discount targets define the parts of a cart that will be discounted. Which of the following can be used as a cart discount target?
a. lineItems
b. giftLineItems
c. shipping
d. customLineItems
Erklärung: Cart Discount Targets definieren die Teile eines Warenkorbs, die rabattiert werden sollen. In commercetools können die folgenden als Ziele für Cart-Rabatte verwendet werden:
lineItems: Rabatte, die auf einzelne Artikel im Warenkorb angewendet werden.
shipping: Rabatte auf Versandkosten.
customLineItems: Rabatte, die auf benutzerdefinierte Positionen im Warenkorb angewendet werden (z.B. zusätzliche Gebühren oder Rabatte auf benutzerdefinierte Artikel).
giftLineItems ist nicht ein gültiger Cart Discount Target.
Question 52: If deleteDaysAfterLastModification is not set, how long will an abandoned Cart exist before it gets deleted?
a. 30 days
b. 60 days
c. Forever
d. 90 days
d. 90 days, wenn keine spezifische Einstellung für deleteDaysAfterLastModification gesetzt wurde.
deleteDaysAfterLastModification
Erklärung: Wenn der Parameter deleteDaysAfterLastModification nicht explizit gesetzt wird, ist der Standardwert für die Anzahl der Tage, nach denen ein Warenkorb mit dem Zustand "Active" gelöscht wird, 90 Tage. Dieser Standardwert kann in den Projekteinstellungen unter CartsConfiguration angepasst werden.
CartsConfiguration
Question 53: Which design pattern can be used to extend the core functionality of the TypeScript SDK with custom requirements?
a. Hoisting
b. Callbacks
c. Global Modules
d. Middleware
d. Middleware.
Erklärung: Um die Kernfunktionalität des TypeScript SDK mit benutzerdefinierten Anforderungen zu erweitern, wird das Middleware-Designmuster verwendet. Middleware ermöglicht es, zusätzliche Logik hinzuzufügen, z. B. für Authentifizierung, Logging oder Fehlerbehandlung, bevor die Anfrage tatsächlich an den Server gesendet wird oder nachdem die Antwort zurückgekehrt ist. Das TypeScript SDK stellt eine Middleware-Architektur bereit, um diese Erweiterungen zu integrieren.
Question 54: Which of the following can be used in the product discount predicate?
a. CustomerId
b. ShippingAddress
c. TotalPrice
d. CustomerGroup
In commercetools kann der Product Discount Predicate verwendet werden, um Produktpreisnachlässe basierend auf bestimmten Bedingungen anzuwenden. Die Option CustomerGroup ist eine der zulässigen Bedingungen, die verwendet werden können, um Rabatte gezielt auf eine bestimmte Kundengruppe anzuwenden. So kann man z. B. nur für eine bestimmte Kundengruppe (z. B. "VIP-Kunden") spezielle Produktpreise anbieten.
Question 55: Which of the following requests will correctly get a customer by key? const key = "customer-1" [ANSWER]
a. apiRoot.withProjectKey({ projectKey }).customers().withKey(key).get().execute();
b. apiRoot.withProjectKey({ projectKey }).customers().get({queryArgs:{key}}).execute();
c. apiRoot.withProjectKey({ projectKey }).customers().withKey({key}).get().execute();
In c wird withKey korrekt als Objekt verwendet ({ key }). Die Methode withKey erwartet ein Objekt mit dem key als Property, daher ist diese Syntax korrekt.
withKey
{ key }
key
a ist nicht korrekt, da withKey(key) ohne die Objektstruktur { key } angegeben ist, was nicht mit der erwarteten Syntax übereinstimmt.
withKey(key)
b ist ebenfalls falsch, da get({queryArgs:{key}}) hier nicht die richtige Struktur für die Abfrage eines spezifischen Kunden mit key ist.
get({queryArgs:{key}})
Question 56: You were using Embedded prices but with growth over a period of time you need more than 100 prices per variant. So you decided to create Standalone Prices in your project. Still only Embedded prices show in the API response from /product-projections. What could be the reason?
a. Products can't have embedded Prices as well as Standalone Prices at the same time.
b. Standalone prices are used by the API only if Product priceMode is set to Standalone.
c. Standalone prices are managed and queried from /standalone-prices endpoint only.
d. Standalone prices are returned by the API only when reference expansion is used on prices.
Das liegt daran, dass in commercetools nur dann auf Standalone Prices zugegriffen wird, wenn der priceMode des Produkts auf "Standalone" eingestellt ist. Ansonsten werden nur Embedded Prices berücksichtigt, und Filter, Facetten und Sortierungen in den Produktabfragen (wie bei /product-projections) beziehen sich nur auf Embedded Prices.
/product-projections
Question 57: Which of the following is TRUE about Messages and Subscriptions in commercetools?
a. Subscriptions are essentially a subset of the change history for a resource
b. Messages are persisted on the REST API by default
c. All changes on a resource result in Messages
d. Messages can be delivered via Subscription to a queue
Erläuterung:
a. Subscriptions are essentially a subset of the change history for a resource: Diese Aussage ist nicht korrekt, weil Subscriptions nicht nur eine Teilmenge der Änderungsverläufe darstellen, sondern darauf abzielen, Echtzeitbenachrichtigungen für Änderungen an bestimmten Ressourcen zu liefern.
b. Messages are persisted on the REST API by default: Das ist nicht korrekt. Nachrichten werden in commercetools nicht standardmäßig auf der REST API gespeichert. Stattdessen werden Nachrichten über Subscriptions zugestellt und sind nicht dauerhaft im System gespeichert.
c. All changes on a resource result in Messages: Das ist ebenfalls falsch. Nicht alle Änderungen an einer Ressource führen zu einer Nachricht. Es kommt darauf an, ob eine Subscription dafür eingerichtet ist und welche Ereignisse überwacht werden.
d. Messages can be delivered via Subscription to a queue: Diese Aussage ist korrekt. In commercetools können Nachrichten durch Subscriptions an eine Warteschlange (Queue) geliefert werden, was es ermöglicht, Änderungen in Echtzeit zu überwachen und zu reagieren.
Question 58: How is pricing information stored in product variants?
a. a String
b. an Array of Objects
c. an Object
d. a Money
In commercetools werden die Preisinformationen in Produktvarianten als Array von Objekten gespeichert. Ein Produkt kann mehrere Preisobjekte enthalten, die verschiedene Preise für unterschiedliche Kontexte wie Währung, Region, Kundengruppe oder Vertriebskanal repräsentieren. Diese Preise werden als Objekte mit verschiedenen Feldern, wie z. B. value (Preisbetrag) und currencyCode (Währung), modelliert.
Dies ermöglicht eine flexiblere Preisgestaltung, die auf verschiedene Parameter wie Region, Währung oder Kundenkategorie abgestimmt ist.
Question 59: What is the best way to install the TypeScript SDK components?
a. Install with yarn add
b. Download from docs.commercetools.com
c. Install with npm install
d. Install from Maven Central
a: yarn ist ein alternativer Paketmanager zu npm und kann auch verwendet werden, um die TypeScript SDK-Komponenten zu installieren. Beispiel:
yarn add @commercetools/sdk-client @commercetools/
sdk-middleware-auth @commercetools/sdk-middleware-http
c : Der beste Weg, die TypeScript SDK-Komponenten für commercetools zu installieren, ist über npm (Node Package Manager), da es die gängigste Methode ist, um JavaScript- und TypeScript-Bibliotheken zu verwalten. Du kannst die SDK-Komponenten mit folgendem Befehl installieren:
npm install @commercetools/sdk-client @commercetools/
Alternativ könnte man auch yarn verwenden, aber npm ist der häufigere und empfohlene
Question 60: What is the distinction between MyAPI endpoints and their general counterparts?
a. MyAPI endpoints are less secure
b. MyAPI endpoints provide access to more fields than other endpoints
c. MyAPI endpoints do not require access tokens, so they are faster
d. MyAPI endpoints create and provide access scoped to a specific user
a. MyAPI endpoints are less secure – Diese Aussage ist nicht korrekt. MyAPI-Endpunkte sind nicht weniger sicher als andere Endpunkte. Sie sind in der Regel sicher und werden durch Authentifizierung und Berechtigungen geschützt.
b. MyAPI endpoints provide access to more fields than other endpoints – Das ist auch nicht korrekt. MyAPI-Endpunkte bieten nicht notwendigerweise mehr Felder als andere Endpunkte. Sie konzentrieren sich vielmehr auf Benutzer- und zugriffsbezogene Daten.
c. MyAPI endpoints do not require access tokens, so they are faster – Das ist falsch. MyAPI-Endpunkte erfordern wie andere Endpunkte auch ein Zugriffstoken zur Authentifizierung, um sicherzustellen, dass der Zugriff korrekt und sicher ist.
d. MyAPI endpoints create and provide access scoped to a specific user – Dies ist richtig. MyAPI-Endpunkte bieten benutzerspezifische Daten und sind auf den Zugriff eines bestimmten Benutzers oder einer bestimmten Benutzerrolle zugeschnitten. Sie ermöglichen es, benutzerspezifische API-Interaktionen zu verwalten und bieten Zugriff auf benutzerspezifische Daten wie Bestellungen, Kundenprofile oder Warenkörbe.
Zuletzt geändertvor einem Monat