Migrate CartCodesRestApi to API Platform

Edit on GitHub

This document describes how to migrate the CartCodesRestApi Glue module to the API Platform CartCode module.

Prerequisites

Overview

The CartCodesRestApi module provided the following storefront endpoints:

Endpoint Operation Old plugin
POST /carts/{cartId}/cart-codes Apply code to cart CartCodesResourceRoutePlugin
DELETE /carts/{cartId}/cart-codes/{code} Remove code from cart CartCodesResourceRoutePlugin
POST /carts/{cartId}/vouchers Apply voucher to cart CartVouchersResourceRoutePlugin
DELETE /carts/{cartId}/vouchers/{code} Remove voucher from cart CartVouchersResourceRoutePlugin
POST /guest-carts/{guestCartId}/guest-cart-codes Apply code to guest cart GuestCartCodesResourceRoutePlugin
DELETE /guest-carts/{guestCartId}/guest-cart-codes/{code} Remove code from guest cart GuestCartCodesResourceRoutePlugin
POST /guest-carts/{guestCartId}/guest-cart-vouchers Apply voucher to guest cart GuestCartVouchersResourceRoutePlugin
DELETE /guest-carts/{guestCartId}/guest-cart-vouchers/{code} Remove voucher from guest cart GuestCartVouchersResourceRoutePlugin

These are now served by the API Platform CartCode module.

1. Update module dependencies

composer require spryker/cart-code:"^X.Y.Z"
Version

Use the version that includes the API Platform resources. Check the module changelog for the exact version.

2. Remove route plugins from GlueApplicationDependencyProvider

In src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php, remove the following plugins from getResourceRoutePlugins():

Plugin to remove Fully qualified class name
CartVouchersResourceRoutePlugin Spryker\Glue\CartCodesRestApi\Plugin\GlueApplication\CartVouchersResourceRoutePlugin
GuestCartVouchersResourceRoutePlugin Spryker\Glue\CartCodesRestApi\Plugin\GlueApplication\GuestCartVouchersResourceRoutePlugin
CartCodesResourceRoutePlugin Spryker\Glue\CartCodesRestApi\Plugin\GlueApplication\CartCodesResourceRoutePlugin
GuestCartCodesResourceRoutePlugin Spryker\Glue\CartCodesRestApi\Plugin\GlueApplication\GuestCartCodesResourceRoutePlugin

3. Delete the CartCodesRestApi Pyz module

Delete the entire src/Pyz/CartCodesRestApi/ directory. This module contained:

  • Pyz\Glue\CartCodesRestApi\CartCodesRestApiDependencyProvider — had DiscountPromotionDiscountMapperPlugin in getDiscountMapperPlugins()

This mapping is now handled internally by the CartCode module.

4. Regenerate transfers and API resources

docker/sdk cli console transfer:generate
docker/sdk cli glue api:generate
docker/sdk cli glue cache:clear

Relationship plugin status

Plugin Status
VoucherByQuoteResourceRelationshipPlugin (CartCodesRestApi) Remains on legacy Glue for old cart endpoints. Do not remove yet.
CartRuleByQuoteResourceRelationshipPlugin (CartCodesRestApi) Remains on legacy Glue for old cart endpoints. Do not remove yet.