Glue API - Price feature integration
Edit on GitHub
You are browsing a previous version of the document. The latest version is 202212.0.
Install feature API
Prerequisites
To start feature integration, overview and install the necessary features:
Name | Version | Integration guide |
---|---|---|
Spryker Core | 201907.0 | Glue Application |
Product | 201907.0 | Products API |
Price | 201907.0 | Price |
1) Install the required modules using Composer
Run the following command to install the required modules:
composer require spryker/product-prices-rest-api:"^1.1.0" spryker/products-product-prices-resource-relationship:"^1.0.0" --update-with-dependencies
Make sure that the following modules are installed:
Module | Expected Directory |
---|---|
ProductPricesRestApi |
vendor/spryker/product-prices-rest-api |
ProductsProductPricesResourceRelationship |
vendor/spryker/products-product-prices-resource-relationship |
2) Set up Transfer Objects
Run the following commands to generate transfer changes:
console transfer:generate
Make sure that the following changes are present in the transfer objects:
Transfer | Type | Event | Path |
---|---|---|---|
RestProductPriceAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestProductPriceAttributesTransfer |
RestProductPricesAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestProductPricesAttributesTransfer |
RestCurrencyTransfer |
class | created | src/Generated/Shared/Transfer/RestCurrencyTransfer |
3) Set up Behavior
Enable resources and relationships
Activate the following plugins:
Plugin | Specification | Prerequisites | Namespace |
---|---|---|---|
AbstractProductPricesRoutePlugin |
Registers the abstract-product-prices resource. |
None | Spryker\Glue\ProductPricesRestApi\Plugin |
ConcreteProductPricesRoutePlugin |
Registers the concrete-product-prices resource. |
None | Spryker\Glue\ProductPricesRestApi\Plugin |
AbstractProductsProductPricesResourceRelationshipPlugin |
Adds the abstract-product-prices resource as a relationship to the abstract-products resource. |
None | Spryker\Glue\ProductsProductPricesResourceRelationship\Plugin |
ConcreteProductsProductPricesResourceRelationshipPlugin |
Adds the concrete-product-prices resource as a relationship to the concrete-products resource. |
None | Spryker\Glue\ProductsProductPricesResourceRelationship\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\ProductPricesRestApi\Plugin\AbstractProductPricesRoutePlugin;
use Spryker\Glue\ProductPricesRestApi\Plugin\ConcreteProductPricesRoutePlugin;
use Spryker\Glue\ProductsProductPricesResourceRelationship\Plugin\AbstractProductsProductPricesResourceRelationshipPlugin;
use Spryker\Glue\ProductsProductPricesResourceRelationship\Plugin\ConcreteProductsProductPricesResourceRelationshipPlugin;
use Spryker\Glue\ProductsRestApi\ProductsRestApiConfig;
class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider
{
/**
* @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface[]
*/
protected function getResourceRoutePlugins(): array
{
return [
new AbstractProductPricesRoutePlugin(),
new ConcreteProductPricesRoutePlugin(),
];
}
/**
* @param \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface $resourceRelationshipCollection
*
* @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRelationshipCollectionInterface
*/
protected function getResourceRelationshipPlugins(
ResourceRelationshipCollectionInterface $resourceRelationshipCollection
): ResourceRelationshipCollectionInterface {
$resourceRelationshipCollection->addRelationship(
ProductsRestApiConfig::RESOURCE_ABSTRACT_PRODUCTS,
new AbstractProductsProductPricesResourceRelationshipPlugin()
);
$resourceRelationshipCollection->addRelationship(
ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
new ConcreteProductsProductPricesResourceRelationshipPlugin()
);
return $resourceRelationshipCollection;
}
}
“Verification”
Make sure that the following endpoints are available:
- http://mysprykershop.com/abstract-products/{{abstract_sku}}/abstract-product-prices
- http://mysprykershop.com/concrete-products/{{concrete_sku}}/concrete-product-prices
abstract-product-prices
resources.Send a request to http://mysprykershop.com/concrete-products/{{concrete_sku}}?include=concrete-product-prices.
Make sure that the response includes relationships to the
concrete-product-prices
resources.
Last review date: Aug 05, 2019
Thank you!
For submitting the form