Sylius Shop API Client
Implement Sylius Shop API Client into your app in just One Step!
- Easy to configure API client for quick use
- All API Plugin endpoints are supported!
- Very simple way to add custom endpoints.
- Well-Organized and scalable project.
- All query params, paths and bodies are documented within the code using jsDoc.
Instalation
npm i sylius-shop-api-client
- OR - yarn add sylius-shop-api-client
Usage
API_Client
import { API_Client } from "sylius-shop-api-client"
// Configuration
// Initialize API BaseURL ( Required ) Don't forget trailing /
API_Client.baseURL = "https://my.web.site/api/"
// Set / Clear API Cart Identifier (token), used in all cart requests.
// After Picking Cart => Set token
API_Client.cartToken = "xxxxxxxxxxxxxxx"
// After Dropping Cart => Clear token
API_Client.cartToken = ""
// Set API Locale
API_Client.locale = "en_US"
// Set API default pagination limit
API_Client.limit = "10"
// Set API Default Headers ( Optional ), below values are already defaults.
const myDefaultHeaders = {
"Accept": "application/json",
"Content-Type": "application/json",
}
API_Client.defaultHeaders = myDefaultHeaders
// Append New Header (name, value) pair, Any where in your code,
API_Client.appendHeader("Authorization", "Bearer xxxxx")
// Remove header from default headers, Any where in your code,
API_Client.removeHeader("Authorization")
// Set onResponseStatus handler,
// to invoke your custom functions in certain response status codes
API_Client.onResponseStatus = (status) => {
switch(status){
case 403:
// Do something, etc Clear UserData, Remove Auth Headers
break
case 500:
// Do something else
break
default:
// Unhandled cases
console.log("Unhandled case for status ", status)
}
}
ShopAPI
import { ShopAPI } from "sylius-shop-api-client"
// Async / Await approach
async loadTaxons() {
try {
const taxons = await ShopAPI.taxons.show_tree()
// then use taxon constant
} catch (error) {
// handle errors
}
}
// Callbacks approach
ShopAPI.taxons.show_tree().then((response) => {
// handle response
}).catch((error) => {
// handle errors
})
Cart ShopAPI.cart
Method |
Status |
ShopAPI.cart.pick |
✅ |
ShopAPI.cart.show |
✅ |
ShopAPI.cart.drop |
✅ |
ShopAPI.cart.add |
✅ |
ShopAPI.cart.add_multiple |
✅ |
ShopAPI.cart.change_quantitiy |
✅ |
ShopAPI.cart.remove_item |
✅ |
ShopAPI.cart.shipping_cost |
✅ |
ShopAPI.cart.add_coupon |
✅ |
ShopAPI.cart.remove_coupon |
✅ |
Products ShopAPI.products
Method |
Status |
ShopAPI.products.by_slug |
✅ |
ShopAPI.products.by_code |
✅ |
ShopAPI.products.by_taxon_slug |
✅ |
ShopAPI.products.by_taxon_code |
✅ |
ShopAPI.products.reviews_by_slug |
✅ |
ShopAPI.products.reviews_by_code |
✅ |
ShopAPI.products.add_review_by_slug |
✅ |
ShopAPI.products.add_review_by_code |
✅ |
ShopAPI.products.latest |
✅ |
Taxons ShopAPI.taxon
Method |
Status |
ShopAPI.taxons.show_tree |
✅ |
ShopAPI.taxons.show_subtree |
✅ |
Checkout ShopAPI.checkout
Method |
Status |
ShopAPI.checkout.summary |
✅ |
ShopAPI.checkout.address |
✅ |
ShopAPI.checkout.get_shipping_methods |
✅ |
ShopAPI.checkout.set_shipping_method |
✅ |
ShopAPI.checkout.get_payment_methods |
✅ |
ShopAPI.checkout.set_payment_method |
✅ |
ShopAPI.checkout.complete |
✅ |
Orders ShopAPI.orders
Method |
Status |
ShopAPI.orders.list_orders |
✅ |
ShopAPI.orders.order_details |
✅ |
User ShopAPI.user
Method |
Status |
ShopAPI.user.request_reset_password |
✅ |
ShopAPI.user.password_reset |
✅ |
ShopAPI.user.register |
✅ |
ShopAPI.user.login |
✅ |
ShopAPI.user.verify_account |
✅ |
ShopAPI.user.me |
✅ |
ShopAPI.user.update_me |
✅ |
ShopAPI.user.change_password |
✅ |
Addresses ShopAPI.addresses
Method |
Status |
ShopAPI.addresses.list |
✅ |
ShopAPI.addresses.create |
✅ |
ShopAPI.addresses.update |
✅ |
ShopAPI.addresses.delete |
✅ |
ShopAPI.addresses.set_default |
✅ |
Custom Endpoint Extending
import { ShopAPI, API_Client } from "sylius-shop-api-client"
const MyShopAPI = {
// Spread defaults endpoints
...ShopAPI,
// Create your own enpoints using API_client.
// Get Method, without query params
myEndpoint: () => API_Client.get("endpoint"),
// Get Method, query params object (will be converted to string)
myEndpointCallMethod: (params) => API_Client.get("endpoint", params),
// Get Method, with changable path and params
myEndpointPathMethod: (path, params) => API_Client.get(`endpoint/${path}`, params),
// Post Method, body object (will be stringified inside)
myEndpointPostMethod: (body) => API_Client.post("endpoint", body),
// And so on, for put, patch and delete
}
// Then use it anywhere in your code,
// Async / Await approach
async loadMyData() {
try {
const data = await MyShopAPI.myEndpoint()
// then use data constant
} catch (error) {
// handle errors
}
}
// Callbacks approach
MyShopAPI.myEndpoint().then((response) => {
// handle response
}).catch((error) => {
// handle errors
})