- 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.
npm i sylius-shop-api-client
- OR - yarn add sylius-shop-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)
}
}
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
})
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 | ✅ |
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 | ✅ |
Method | Status |
---|---|
ShopAPI.taxons.show_tree | ✅ |
ShopAPI.taxons.show_subtree | ✅ |
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 | ✅ |
Method | Status |
---|---|
ShopAPI.orders.list_orders | ✅ |
ShopAPI.orders.order_details | ✅ |
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 | ✅ |
Method | Status |
---|---|
ShopAPI.addresses.list | ✅ |
ShopAPI.addresses.create | ✅ |
ShopAPI.addresses.update | ✅ |
ShopAPI.addresses.delete | ✅ |
ShopAPI.addresses.set_default | ✅ |
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
})