UNPKG

lin3s-sylius-shop-api-client

Version:

JavaScript client on top of SyliusShopApiPlugin to build integrations with ease.

142 lines (106 loc) 3.75 kB
# SyliusShopApiClient JavaScript client on top of [SyliusShopApiPlugin](https://github.com/Sylius/SyliusShopApiPlugin) to build integrations with ease. ## Installation **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** ```js const api = createSyliusApiClient({ baseUrl: 'localhost', channel: 'default', cookieDomain: '.myapp.com', locale: 'en_US', cartCookieExpiration: 604800000, userCookieExpiration: 2592000000, cartTokenCookie: 'cart-token', }) ``` ## Usage 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): ```js 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: ```js 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(); ``` ## API ### Cart `api.cart` |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**||✅| ### Checkout `api.checkout` |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}|✅| ### Product `api.product` |Method|Params|Status| |---|---|---| |**api.product.bySlug**|{slug}|✅| |**api.product.byCode**||❌| |**api.product.reviewsBySlug**||❌| |**api.product.reviewsByCode**||❌| |**api.product.addReviewBySlug**||❌| |**api.product.addReviewByCode**||❌| ### Taxon `api.taxon` |Method|Params|Status| |---|---|---| |**api.taxon.all**||✅| |**api.taxon.byCode**||❌| |**api.taxon.productsByTaxonCode**||❌| |**api.taxon.productsByTaxonSlug**|{slug}|✅| ### User `api.user` |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**|~|✅|