Glue API - Inventory Management feature integration
Edit on GitHubInstall feature API
Prerequisites
To start feature integration, overview and install the necessary features:
Name | Version | Integration guide |
---|---|---|
Glue API: Glue Application | 201903.0 | Glue Application feature integration |
Glue API: Product | 201903.0 | Product API feature integration |
Inventory Management | 201903.0 |
1) Install the required modules using Composer
Run the following command(s) to install the required modules:
composer require spryker/product-availabilities-rest-api:"^1.0.3" spryker/products-product-availabilities-resource-relationship:"^1.0.0" --update-with-dependencies
Verfification
Make sure that the following modules were installed:
Module | Expected Directory |
---|---|
ProductAvailabilitiesRestApi |
vendor/spryker/product-availabilities-rest-api |
ProductsProductAvailabilitiesResourceRelationship |
vendor/spryker/products-product-availabilities-resource-relationship |
2) Set up Transfer objects
Run the following commands to generate transfer changes:
console transfer:generate
Verification
Make sure that the following changes have been applied in transfer objects:
Transfer | Type | Event | Path |
---|---|---|---|
RestAbstractProductAvailabilityAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestAbstractProductAvailabilityAttributesTransfer |
RestConcreteProductAvailabilityAttributesTransfer |
class | created | src/Generated/Shared/Transfer/RestConcreteProductAvailabilityAttributesTransfer |
3) Set up Behavior
Enable resources and relationships
Activate the following plugin:
Plugin | Specification | Prerequisites | Namespace |
---|---|---|---|
AbstractProductAvailabilitiesRoutePlugin |
Registers abstract product availabilities resource. | None | Spryker\Glue\ProductAvailabilitiesRestApi\Plugin |
ConcreteProductAvailabilitiesRoutePlugin |
Registers concrete product availabilities resource. | None | Spryker\Glue\ProductAvailabilitiesRestApi\Plugin |
AbstractProductAvailabilitiesResourceRelationshipPlugin |
Adds abstract product availability resource as a relationship to abstract product resource. | None | Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\Plugin |
ConcreteProductAvailabilitiesResourceRelationshipPlugin |
Adds concrete product availability resource as a relationship to concrete product resource. | None | Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\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\ProductAvailabilitiesRestApi\Plugin\AbstractProductAvailabilitiesRoutePlugin;
use Spryker\Glue\ProductAvailabilitiesRestApi\Plugin\ConcreteProductAvailabilitiesRoutePlugin;
use Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\Plugin\AbstractProductAvailabilitiesResourceRelationshipPlugin;
use Spryker\Glue\ProductsProductAvailabilitiesResourceRelationship\Plugin\ConcreteProductAvailabilitiesResourceRelationshipPlugin;
use Spryker\Glue\ProductsRestApi\ProductsRestApiConfig;
class GlueApplicationDependencyProvider extends SprykerGlueApplicationDependencyProvider
{
/**
* @return \Spryker\Glue\GlueApplicationExtension\Dependency\Plugin\ResourceRoutePluginInterface[]
*/
protected function getResourceRoutePlugins(): array
{
return [
new AbstractProductAvailabilitiesRoutePlugin(),
new ConcreteProductAvailabilitiesRoutePlugin(),
];
}
/**
* @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 AbstractProductAvailabilitiesResourceRelationshipPlugin()
);
$resourceRelationshipCollection->addRelationship(
ProductsRestApiConfig::RESOURCE_CONCRETE_PRODUCTS,
new ConcreteProductAvailabilitiesResourceRelationshipPlugin()
);
return $resourceRelationshipCollection;
}
}
Verification
Make sure that the following endpoints are available: - http://mysprykershop.com/abstract-products/{{abstract_sku}}/abstract-product-availabilities
- http://mysprykershop.com/concrete-products/{{concrete_sku}}/concrete-product-availabilities
Send a request to "http://mysprykershop.com/abstract-products/{{abstract_sku}}?include=abstract-product-availabilities". Make sure that the response includes relationships to the "abstract-product-availabilities" resource.
Send a request to "http://mysprykershop.com/concrete-products/{{concrete_sku}}?include=concrete-product-availabilities". Make sure that the response includes relationships to the "concrete-product-availabilities" resource.
Thank you!
For submitting the form