From 8b1b551260c8f3764135ed65bd099b8e9a0f23da Mon Sep 17 00:00:00 2001 From: Zakaria El Asri <33696020+zakariaelas@users.noreply.github.com> Date: Thu, 16 Dec 2021 14:55:03 +0100 Subject: [PATCH] feat: medusa js admin shipping options (#934) * add: shipping-options admin endpoint to medusa-js * fix: retrieve return type for Collections * fix typo in routes Co-authored-by: Sebastian Rindom --- .../src/resources/admin/collections.ts | 2 +- .../medusa-js/src/resources/admin/index.ts | 2 + .../src/resources/admin/shipping-options.ts | 80 +++++++++++++++++++ packages/medusa/src/api/index.js | 2 + 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 packages/medusa-js/src/resources/admin/shipping-options.ts diff --git a/packages/medusa-js/src/resources/admin/collections.ts b/packages/medusa-js/src/resources/admin/collections.ts index aa32900d04..1fdb34da14 100644 --- a/packages/medusa-js/src/resources/admin/collections.ts +++ b/packages/medusa-js/src/resources/admin/collections.ts @@ -51,7 +51,7 @@ class AdminCollectionsResource extends BaseResource { * @param id id of the collection to retrieve. * @returns the collection with the given id */ - retrieve(id: string): ResponsePromise { + retrieve(id: string): ResponsePromise { const path = `/admin/collections/${id}` return this.client.request("GET", path) } diff --git a/packages/medusa-js/src/resources/admin/index.ts b/packages/medusa-js/src/resources/admin/index.ts index 031937bfb7..64afafd509 100644 --- a/packages/medusa-js/src/resources/admin/index.ts +++ b/packages/medusa-js/src/resources/admin/index.ts @@ -12,6 +12,7 @@ import AdminReturnReasonsResource from "./return-reasons" import AdminVariantsResource from "./variants" import AdminSwapsResource from "./swaps" import AdminShippingProfilesResource from "./shipping-profiles" +import AdminShippingOptionsResource from "./shipping-options" import AdminRegionsResource from "./regions" class Admin extends BaseResource { @@ -28,6 +29,7 @@ class Admin extends BaseResource { public variants = new AdminVariantsResource(this.client) public swaps = new AdminSwapsResource(this.client) public shippingProfiles = new AdminShippingProfilesResource(this.client) + public shippingOptions = new AdminShippingOptionsResource(this.client) public regions = new AdminRegionsResource(this.client) } diff --git a/packages/medusa-js/src/resources/admin/shipping-options.ts b/packages/medusa-js/src/resources/admin/shipping-options.ts new file mode 100644 index 0000000000..f02b269fd3 --- /dev/null +++ b/packages/medusa-js/src/resources/admin/shipping-options.ts @@ -0,0 +1,80 @@ +import { + AdminPostShippingOptionsReq, + AdminShippingOptionsRes, + AdminPostShippingOptionsOptionReq, + AdminShippingOptionsDeleteRes, + AdminShippingOptionsListRes, + AdminGetShippingOptionsParams, +} from "@medusajs/medusa" +import { ResponsePromise } from "../../typings" +import BaseResource from "../base" + +class AdminShippingOptionsResource extends BaseResource { + /** + * @description creates a shipping option. + * @param payload + * @returns created shipping option. + */ + create( + payload: AdminPostShippingOptionsReq + ): ResponsePromise { + const path = `/admin/shipping-options` + return this.client.request("POST", path, payload) + } + + /** + * @description updates a shipping option + * @param id id of the shipping option to update. + * @param payload update to apply to shipping option. + * @returns the updated shipping option. + */ + update( + id: string, + payload: AdminPostShippingOptionsOptionReq + ): ResponsePromise { + const path = `/admin/shipping-options/${id}` + return this.client.request("POST", path, payload) + } + + /** + * @description deletes a shipping option + * @param id id of shipping option to delete. + * @returns deleted response + */ + delete(id: string): ResponsePromise { + const path = `/admin/shipping-options/${id}` + return this.client.request("DELETE", path) + } + + /** + * @description get a shipping option + * @param id id of the shipping option to retrieve. + * @returns the shipping option with the given id + */ + retrieve(id: string): ResponsePromise { + const path = `/admin/shipping-options/${id}` + return this.client.request("GET", path) + } + + /** + * @description lists shipping options matching a query + * @param query query for searching shipping options + * @returns a list of shipping options matching the query. + */ + list( + query?: AdminGetShippingOptionsParams + ): ResponsePromise { + let path = `/admin/shipping-options` + + if (query) { + const queryString = Object.entries(query).map(([key, value]) => { + return typeof value !== "undefined" ? `${key}=${value}` : "" + }) + path = `/admin/shipping-options?${queryString.join("&")}` + } + + return this.client.request("GET", path) + } +} + +export default AdminShippingOptionsResource diff --git a/packages/medusa/src/api/index.js b/packages/medusa/src/api/index.js index 6dfb04b4e1..d7027378cf 100644 --- a/packages/medusa/src/api/index.js +++ b/packages/medusa/src/api/index.js @@ -31,7 +31,9 @@ export * from "./routes/admin/orders" export * from "./routes/admin/variants" export * from "./routes/admin/return-reasons" export * from "./routes/admin/swaps" +export * from "./routes/admin/shipping-options" export * from "./routes/admin/regions" + // Store export * from "./routes/store/auth" export * from "./routes/store/carts"