JavaScript client on top of SyliusShopApiPlugin to build integrations with ease.
Download the package:
- Using npm
$ npm install lin3s-sylius-shop-api-client
- Using yarn
$ yarn add lin3s-sylius-shop-api-client
Import the client:
- Using
import
:
import createSyliusApiClient from 'lin3s-sylius-shop-api-client';
- Using
require()
:
const createSyliusApiClient = require('lin3s-sylius-shop-api-client');
Initialize the client
const api = createSyliusApiClient({
baseUrl: 'localhost',
channel: 'default',
cookieDomain: '.myapp.com',
locale: 'en_US',
cartCookieExpiration: 604800000,
userCookieExpiration: 2592000000,
cartTokenCookie: 'cart-token',
})
For example to use the productsByTaxonSlug
using the parameters as described in the API docs bellow ({slug}
=
an object containing slug property and its value):
const products = api.taxon.productsByTaxonSlug({slug: 'some-slug'});
Adding custom endpoints
In case a new endpoint is created in shop-api you can still use the configuration of the client. Your custom function will receive the config via parameters and it must return a function. This function has to be passed in the constructor. An example:
import axios from 'axios';
// You can make use of requestConfig helpers and session values
import createSyliusShopApiClient, {requestConfig} from 'lin3s-sylius-shop-api-client';
const myCustomEndpoint = config => () => new Promise(resolve => {
axios.get(`${config.baseUrl}/shop-api/my-custom-endpoint`)
.then(response => resolve(response.data));
});
const api = createSyliusApiClient({
baseUrl: 'localhost',
channel: 'default',
locale: 'en_US',
customEndpoints: {
myCustomEndpoint
}
});
// Usage
const response = api.custom.myCustomEndpoint();
api.Session.Cart.remove();
Method | Params | Status |
---|---|---|
api.cart.pickup | ~ | ✅ |
api.cart.summary | {cartId} (optional) | ✅ |
api.cart.drop | ❌ | |
api.cart.addItem | {productCode, variantCode, quantity} | ✅ |
api.cart.addItems | [{productCode, variantCode, quantity}] | ❌ |
api.cart.changeItemQuantity | ✅ | |
api.cart.removeItem | {orderItemId} | ✅ |
api.cart.estimatedShippingCost | ❌ | |
api.cart.addCoupon | ✅ | |
api.cart.removeCoupon | ✅ |
Method | Params | Status |
---|---|---|
api.checkout.summary | ❌ | |
api.checkout.address | {shippingAddress, billingAddress} | ✅ |
api.checkout.chooseShippingMethod | {shipmentId, methodCode} | ✅ |
api.checkout.choosePaymentMethod | {paymentId, methodCode} | ✅ |
api.checkout.availableShippingMethods | ~ | ✅ |
api.checkout.availablePaymentMethods | ~ | ✅ |
api.checkout.complete | {notes} | ✅ |
Method | Params | Status |
---|---|---|
api.product.bySlug | {slug} | ✅ |
api.product.byCode | ❌ | |
api.product.reviewsBySlug | ❌ | |
api.product.reviewsByCode | ❌ | |
api.product.addReviewBySlug | ❌ | |
api.product.addReviewByCode | ❌ |
Method | Params | Status |
---|---|---|
api.taxon.all | ✅ | |
api.taxon.byCode | ❌ | |
api.taxon.productsByTaxonCode | ❌ | |
api.taxon.productsByTaxonSlug | {slug} | ✅ |
Method | Params | Status |
---|---|---|
api.user.register | {email, firstname, lastname, plainPassword} | ✅ |
api.user.resendVerificationLink | ❌ | |
api.user.verifyAccount | ❌ | |
api.user.requestPasswordReset | {email} | ✅ |
api.user.passwordReset | {password} | ✅ |
api.user.login | {_username, _password} | ✅ |
api.user.me | ~ | ✅ |