Glue API - Return management feature integration

Edit on GitHub
You are browsing a previous version of the document. The latest version is 202108.0.

Install feature API

Prerequisites

To start feature integration, overview and install the necessary features:

Name Version Integration guide
Spryker Core 202009.0 Feature API
Return Management 202009.0 Feature

1) Install the required modules using Composer

Run the following command(s) to install the required modules:

composer require spryker/sales-returns-rest-api:"202009.0" --update-with-dependencies
Verification

Make sure that the following modules have been installed:

Module Expected Directory
SalesReturnsRestApi vendor/spryker/sales-returns-rest-api

2) Set up Transfer Objects

Run the following commands to generate transfer changes:

console transfer:generate
Verification

Make sure that the configured data are added to the spy_glossary table in the database.

Transfer Type Event Path
RestReturnsAttributes class created src/Generated/Shared/Transfer/RestReturnsAttributesTransfer
RestReturnReasonsAttributes class created src/Generated/Shared/Transfer/RestReturnReasonsAttributesTransfer
RestReturnRequestAttributes class created src/Generated/Shared/Transfer/RestReturnRequestAttributesTransfer
RestReturnItemRequestAttributes class created src/Generated/Shared/Transfer/RestReturnItemRequestAttributesTransfer
RestReturnTotalsAttributes class created src/Generated/Shared/Transfer/RestReturnTotalsAttributesTransfer
RestReturnItemsAttributes class created src/Generated/Shared/Transfer/RestReturnItemsAttributesTransfer

3) Set up Behavior

Enable resources and relationships: | Plugin | Specification | Prerequisites | Namespace | | — | — | — | — | | OrderItemByResourceIdResourceRelationshipPlugin | Adds order-items resource as relationship by order item uuid. | None | Spryker\Glue\OrdersRestApi\Plugin | | ReturnItemByReturnResourceRelationshipPlugin | Adds return-items resource as relationship by return. | None | Spryker\Glue\SalesReturnsRestApi\Plugin | | ReturnsResourceRoutePlugin | Registers /returns route. | None | Spryker\Glue\SalesReturnsRestApi\Plugin | | ReturnReasonsResourceRoutePlugin | Registers /return-reasons route. | None | Spryker\Glue\SalesReturnsRestApi\Plugin |

src/Pyz/Glue/GlueApplication/GlueApplicationDependencyProvider.php

<?php
 
namespace Pyz\Glue\GlueApplication;
 
use Spryker\Glue\GlueApplication\GlueApplicationDependencyProvider as SprykerGlueApplicationDependencyProvider;
use Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface;
use Spryker\Glue\SalesReturnsRestApi\Plugin\ReturnItemByReturnResourceRelationshipPlugin;
use Spryker\Glue\SalesReturnsRestApi\Plugin\ReturnReasonsResourceRoutePlugin;
use Spryker\Glue\SalesReturnsRestApi\Plugin\ReturnsResourceRoutePlugin;
use Spryker\Glue\SalesReturnsRestApi\SalesReturnsRestApiConfig;

class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider
{
    /**
     * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface[]
     */
    protected function getResourceRoutePlugins(): array
    {
        return [
            new ReturnReasonsResourceRoutePlugin(),
            new ReturnsResourceRoutePlugin(),
        ];
    }
 
    /**
     * @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection
     *
     * @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface
     */
    protected function getResourceRelationshipPlugins(
        ResourceRelationshipCollectionInterface $resourceRelationshipCollection
    ): ResourceRelationshipCollectionInterface {
        $resourceRelationshipCollection->addRelationship(
            SalesReturnsRestApiConfig::RESOURCE_RETURNS,
            new ReturnItemByReturnResourceRelationshipPlugin()
        );
        $resourceRelationshipCollection->addRelationship(
            SalesReturnsRestApiConfig::RESOURCE_RETURN_ITEMS,
            new OrderItemByResourceIdResourceRelationshipPlugin()
        );
 
        return $resourceRelationshipCollection;
    }
}
Verification

Make sure that following endpoints are available now:

  • https://glue.mysprykershop.com/returns
  • https://glue.mysprykershop.com/return-reasons

Make sure that items from https://glue.mysprykershop.com/orders endpoint contain isReturnable and uuid properties.