# Promocode einlösen Löst einen Promocode aus einer Werbeaktion ein. Nach dem Einlösen eines Promocodes erhält der Nutzer kostenlose Artikel und/oder der Preis des Warenkorbs und/oder bestimmter Artikel wird reduziert. Endpoint: POST /v2/project/{project_id}/promocode/redeem Version: 2.0.0 Security: AuthForCart ## Path parameters: - `project_id` (integer, required) Projekt-ID. Dieser Parameter wird im Kundenportal neben dem Projektnamen angezeigt. Example: 44056 ## Request fields (application/json): - `cart` (object,null) - `cart.id` (string, required) Warenkorb-ID. - `coupon_code` (string) Eindeutiger Code des Promocodes. Enthält Buchstaben und Ziffern. Example: "SUMMER2021" - `selected_unit_items` (object) Die von einem Nutzer ausgewählte Belohnung. Der Objektschlüssel ist eine SKU einer Einheit und der Wert ist eine SKU eines der Artikel in einer Einheit. Example: {"game_1":"game_1_steam","game_2":"game_2_playstation"} ## Response 200 fields (application/json): - `cart_id` (string) Warenkorb-ID. Example: "cart_id" - `is_free` (boolean) Ist true eingestellt, ist der Artikel kostenlos. - `items` (array) Example: [{"attributes":[],"can_be_bought":{"$ref":"../schemas/Can_be_bought.yaml"},"description":"Take it, take it all! All of Xsolla's riches in one Mega Booster.","groups":[{"external_id":"powerups","name":"Power Ups"}],"image_url":"https://cdn.xsolla.net/img/misc/images/e9f2f4a634bc96ea03b5d5ceadd7c55f.png","is_free":false,"limits":{"$ref":"../schemas/Catalog_item_limits.yaml"},"name":"Xsolla Booster Mega","periods":{"$ref":"../schemas/item-periods.yaml"},"price":{"amount":"50.0000000000000000","amount_without_discount":"100.0000000000000000","currency":"USD"},"promotions":{"$ref":"../schemas/Catalog_item_promotions.yaml"},"quantity":123,"sku":"com.xsolla.booster_mega_1","type":"virtual_good","virtual_item_type":"consumable","virtual_prices":[],"vp_rewards":{"$ref":"../schemas/reward-chain-client/client-item-value-point-reward.yaml"}}] - `items.can_be_bought` (boolean) Sofern true, kann der Nutzer einen Artikel kaufen. Example: true - `items.description` (string) - `items.groups` (array) - `items.groups.external_id` (string) - `items.groups.name` (string) - `items.image_url` (string) - `items.limits` (object,null) Artikelbeschränkungen. - `items.limits.per_item` (object,null) Artikelbeschränkungen für einen Artikel. - `items.limits.per_item.available` (integer) Verbleibende Anzahl von Artikeln, die alle Nutzer kaufen können. Example: 3 - `items.limits.per_item.total` (integer) Höchstzahl von Artikeln, die alle Nutzer kaufen können. Example: 5 - `items.limits.per_user` (object,null) Artikelbeschränkungen für einen Nutzer. - `items.limits.per_user.available` (integer) Verbleibende Anzahl von Artikeln, die der aktuelle Nutzer kaufen kann. Example: 3 - `items.limits.per_user.limit_exceeded_visibility` (string) Steuert die Sichtbarkeit des Artikels im Katalog nach Erreichen des Kauflimits, und zwar bis das Limit das nächste Mal zurückgesetzt wird. Gilt für Artikel, bei denen im Array recurrent_schedule Limits konfiguriert sind, die regelmäßig zurückgesetzt werden. Ist keine Zurücksetzung konfiguriert, wird der Artikel nach Erreichen des Kauflimits nicht im Katalog angezeigt, unabhängig vom Wert des Parameters limit_exceeded_visibility. Enum: "show", "hide" - `items.limits.per_user.recurrent_schedule` (object) Wiederkehrender Artikellimit-Aktualisierungszeitraums für einen Nutzer. - `items.limits.per_user.recurrent_schedule.interval_type` (string) Typ des wiederkehrenden Aktualisierungszeitraums. Enum: "daily", "weekly", "monthly", "hourly" - `items.limits.per_user.recurrent_schedule.reset_next_date` (integer) Datum und Uhrzeit, zu dem die Limits zurückgesetzt werden (Unix-Zeitstempel). Example: 1677553200 - `items.limits.per_user.total` (integer) Höchstzahl von Artikeln, die ein einzelner Nutzer kaufen kann. Example: 5 - `items.periods` (array,null) Artikelangebotszeitraum. - `items.periods.date_from` (string) Datum, an dem der angegebene Artikel zum Verkauf angeboten wird. Example: "2020-08-11T10:00:00+03:00" - `items.periods.date_until` (string,null) Datum, an dem der angegebene Artikel nicht mehr zum Verkauf angeboten wird. Möglich ist: null. Example: "2020-08-11T20:00:00+03:00" - `items.promotions` (array) Auf bestimmte Artikel im Warenkorb angewandte Werbeaktionen. Das array wird in den folgenden Fällen zurückgegeben: * Für einen bestimmten Artikel ist eine Rabattaktion konfiguriert. * Ein Promocode mit der Einstellung Rabatt auf ausgewählte Artikel ist angewandt. Werden keine Werbeaktionen auf Artikelebene angewandt, wird ein leeres Array zurückgegeben. - `items.promotions.bonus` (array) - `items.promotions.bonus.bundle_type` (string) Typ des im Bundle enthaltenen Bonusartikels. Nur verfügbar für Bonusartikel vom Typ bundle. Enum: "standard", "virtual_currency_package" - `items.promotions.bonus.image_url` (string) Bild-URL des Bonusartikels. Nicht verfügbar für Bonusartikel vom Typ physical_good. - `items.promotions.bonus.name` (string) Name des Bonusartikels. Nicht verfügbar für Bonusartikel vom Typ physical_good. - `items.promotions.bonus.quantity` (integer) - `items.promotions.bonus.sku` (string) - `items.promotions.bonus.type` (string) Typ des Bonusartikels. Enum: "virtual_good", "virtual_currency", "bundle", "physical_good", "game_key", "nft" - `items.promotions.date_end` (string,null) - `items.promotions.date_start` (string,null) - `items.promotions.discount` (object,null) - `items.promotions.discount.percent` (string,null) - `items.promotions.discount.value` (string,null) - `items.promotions.limits` (object) - `items.promotions.limits.per_user` (object) - `items.promotions.limits.per_user.available` (integer) - `items.promotions.limits.per_user.total` (integer) - `items.type` (string) - `items.vp_rewards` (array) Wertpunktartikel-Belohnung. - `items.vp_rewards.amount` (integer) Anzahl der Wertpunkte. - `items.vp_rewards.image_url` (string) Bild-URL. Example: "https://image.example.com" - `items.vp_rewards.is_clan` (boolean) Ob der Wertpunkt in Clan-Belohnungsketten verwendet wird. Example: true - `items.vp_rewards.item_id` (integer) Interne eindeutige Artikel-ID. Example: 1 - `items.vp_rewards.name` (string) Wertpunktname. - `items.vp_rewards.sku` (string) Eindeutige ID des Wertpunkts. - `price` (object,null) Warenkorbpreis. Example: {"amount":"6150.0000000000000000","amount_without_discount":"6150.0000000000000000","currency":"USD"} - `price.amount` (string) Example: "6150.0000000000000000" - `price.amount_without_discount` (string) Example: "6150.0000000000000000" - `price.currency` (string) Example: "USD" - `rewards` (object) - `rewards.discount` (object,null) Prozentualer Rabatt. Der Preis des Warenkorbs wird um einen Wert verringert, der anhand dieses Prozentsatzes berechnet und dann auf zwei Dezimalstellen gerundet wird. - `rewards.discounted_items` (array,null) Liste der Artikel, die durch einen Promocode rabattiert werden. - `rewards.discounted_items.sku` (string, required) Artikel-SKU. - `rewards.is_selectable` (boolean) Ist true eingestellt, sollte der Nutzer vor dem Einlösen eines Promocodes den Bonus auswählen. ## Response 401 fields (application/json): - `errorCode` (integer) Example: 1501 - `errorMessage` (string) Example: "[0401-1501]: Authorization failed: Provide authorization" - `statusCode` (integer) Example: 401 ## Response 403 fields (application/json): - `errorCode` (integer) - `errorMessage` (string) Example: "Authorization header not sent." - `statusCode` (integer) Example: 403 - `transactionId` (string) Example: "x-x-x-x-transactionId-mock-x-x-x" ## Response 404 fields (application/json): - `errorCode` (integer) Example: 4001 - `errorMessage` (string) Example: "[0401-9807]: Enter valid promo code." - `statusCode` (integer) Example: 404 ## Response 422 fields (application/json): - `errorCode` (integer) Example: 1102 - `errorMessage` (string) Example: "[0401-1102]: Unprocessable Entity. The property `coupon_code` is required" - `statusCode` (integer) Example: 422 - `transactionId` (string) Example: "x-x-x-x-transactionId-mock-x-x-x"