From 50ce223e4b35db22230f7372e83af431212da88f Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Thu, 6 Jun 2024 11:04:42 +0200 Subject: [PATCH] feat(types,js-sdk,medusa,fulfillment): Types and SDK methods related to Stock Locations (#7625) --- .../admin/fulfillment-sets.spec.ts | 4 +- .../locations/location-details/const.ts | 2 +- .../js-sdk/src/admin/fulfillment-provider.ts | 24 ++++ .../core/js-sdk/src/admin/fulfillment-set.ts | 85 ++++++++++++++ packages/core/js-sdk/src/admin/fulfillment.ts | 58 ++++++++++ packages/core/js-sdk/src/admin/index.ts | 20 +++- .../core/js-sdk/src/admin/sales-channel.ts | 97 ++++++++++++++++ .../core/js-sdk/src/admin/shipping-option.ts | 82 +++++++++++++ .../core/js-sdk/src/admin/shipping-profile.ts | 82 +++++++++++++ .../core/js-sdk/src/admin/stock-location.ts | 108 ++++++++++++++++++ .../fulfillment-provider/admin/entities.ts | 8 ++ .../http/fulfillment-provider/admin/index.ts | 3 + .../fulfillment-provider/admin/queries.ts | 7 ++ .../fulfillment-provider/admin/responses.ts | 7 ++ .../src/http/fulfillment-provider/index.ts | 1 + .../http/fulfillment-set/admin/entities.ts | 33 ++++++ .../src/http/fulfillment-set/admin/index.ts | 3 + .../http/fulfillment-set/admin/payloads.ts | 79 +++++++++++++ .../src/http/fulfillment-set/admin/queries.ts | 12 ++ .../http/fulfillment-set/admin/responses.ts | 16 +++ .../types/src/http/fulfillment-set/index.ts | 1 + .../src/http/fulfillment/admin/entitites.ts | 65 +++++++++++ .../fulfillment/admin/fulfillment-address.ts | 18 --- .../fulfillment/admin/fulfillment-item.ts | 13 --- .../fulfillment/admin/fulfillment-label.ts | 10 -- .../fulfillment/admin/fulfillment-provider.ts | 8 -- .../http/fulfillment/admin/fulfillment-set.ts | 16 --- .../src/http/fulfillment/admin/fulfillment.ts | 28 ----- .../src/http/fulfillment/admin/geo-zone.ts | 14 --- .../types/src/http/fulfillment/admin/index.ts | 15 +-- .../src/http/fulfillment/admin/payloads.ts | 46 ++++++++ .../src/http/fulfillment/admin/responses.ts | 5 + .../http/fulfillment/admin/service-zone.ts | 23 ---- .../fulfillment/admin/shipping-option-rule.ts | 10 -- .../fulfillment/admin/shipping-option-type.ts | 10 -- .../http/fulfillment/admin/shipping-option.ts | 40 ------- .../fulfillment/admin/shipping-profile.ts | 22 ---- packages/core/types/src/http/index.ts | 6 +- .../types/src/http/pricing/admin/entitites.ts | 31 +++++ .../types/src/http/pricing/admin/index.ts | 1 + packages/core/types/src/http/pricing/index.ts | 2 +- packages/core/types/src/http/pricing/price.ts | 7 -- .../src/http/sales-channel/admin/entities.ts | 10 ++ .../src/http/sales-channel/admin/index.ts | 5 +- .../src/http/sales-channel/admin/payloads.ts | 18 +++ .../src/http/sales-channel/admin/queries.ts | 17 +++ .../src/http/sales-channel/admin/responses.ts | 13 +++ .../http/sales-channel/admin/sales-channel.ts | 17 --- .../http/shipping-option/admin/entities.ts | 48 ++++++++ .../src/http/shipping-option/admin/index.ts | 4 + .../http/shipping-option/admin/payloads.ts | 75 ++++++++++++ .../src/http/shipping-option/admin/queries.ts | 14 +++ .../http/shipping-option/admin/responses.ts | 23 ++++ .../types/src/http/shipping-option/index.ts | 1 + .../http/shipping-profile/admin/entities.ts | 9 ++ .../src/http/shipping-profile/admin/index.ts | 4 + .../http/shipping-profile/admin/payloads.ts | 11 ++ .../http/shipping-profile/admin/queries.ts | 14 +++ .../http/shipping-profile/admin/responses.ts | 13 +++ .../types/src/http/shipping-profile/index.ts | 1 + .../http/stock-locations/admin/entities.ts | 22 ++++ .../src/http/stock-locations/admin/index.ts | 4 + .../http/stock-locations/admin/payloads.ts | 34 ++++++ .../src/http/stock-locations/admin/queries.ts | 11 ++ .../http/stock-locations/admin/responses.ts | 14 +++ .../types/src/http/stock-locations/common.ts | 30 ----- .../types/src/http/stock-locations/index.ts | 2 +- .../core/types/src/sales-channel/mutations.ts | 2 +- .../admin/fulfillment-providers/validators.ts | 16 ++- .../api/admin/fulfillment-sets/[id]/route.ts | 4 +- .../[id]/service-zones/[zone_id]/route.ts | 5 +- .../admin/fulfillment-sets/query-config.ts | 5 - .../api/admin/fulfillment-sets/validators.ts | 19 +-- .../api/admin/sales-channels/validators.ts | 4 +- .../api/admin/shipping-options/[id]/route.ts | 12 +- .../src/api/admin/shipping-options/route.ts | 11 +- .../api/admin/shipping-options/validators.ts | 26 ++++- .../api/admin/shipping-profiles/[id]/route.ts | 12 +- .../src/api/admin/shipping-profiles/route.ts | 11 +- .../api/admin/shipping-profiles/validators.ts | 1 + .../api/admin/stock-locations/validators.ts | 9 +- .../src/models/fulfillment-provider.ts | 3 +- .../fulfillment/src/models/shipping-option.ts | 2 + 83 files changed, 1327 insertions(+), 351 deletions(-) create mode 100644 packages/core/js-sdk/src/admin/fulfillment-provider.ts create mode 100644 packages/core/js-sdk/src/admin/fulfillment-set.ts create mode 100644 packages/core/js-sdk/src/admin/fulfillment.ts create mode 100644 packages/core/js-sdk/src/admin/sales-channel.ts create mode 100644 packages/core/js-sdk/src/admin/shipping-option.ts create mode 100644 packages/core/js-sdk/src/admin/shipping-profile.ts create mode 100644 packages/core/js-sdk/src/admin/stock-location.ts create mode 100644 packages/core/types/src/http/fulfillment-provider/admin/entities.ts create mode 100644 packages/core/types/src/http/fulfillment-provider/admin/index.ts create mode 100644 packages/core/types/src/http/fulfillment-provider/admin/queries.ts create mode 100644 packages/core/types/src/http/fulfillment-provider/admin/responses.ts create mode 100644 packages/core/types/src/http/fulfillment-provider/index.ts create mode 100644 packages/core/types/src/http/fulfillment-set/admin/entities.ts create mode 100644 packages/core/types/src/http/fulfillment-set/admin/index.ts create mode 100644 packages/core/types/src/http/fulfillment-set/admin/payloads.ts create mode 100644 packages/core/types/src/http/fulfillment-set/admin/queries.ts create mode 100644 packages/core/types/src/http/fulfillment-set/admin/responses.ts create mode 100644 packages/core/types/src/http/fulfillment-set/index.ts create mode 100644 packages/core/types/src/http/fulfillment/admin/entitites.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment-address.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment-item.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment-label.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment-provider.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment-set.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/fulfillment.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/geo-zone.ts create mode 100644 packages/core/types/src/http/fulfillment/admin/payloads.ts create mode 100644 packages/core/types/src/http/fulfillment/admin/responses.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/service-zone.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/shipping-option-rule.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/shipping-option-type.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/shipping-option.ts delete mode 100644 packages/core/types/src/http/fulfillment/admin/shipping-profile.ts create mode 100644 packages/core/types/src/http/pricing/admin/entitites.ts create mode 100644 packages/core/types/src/http/pricing/admin/index.ts delete mode 100644 packages/core/types/src/http/pricing/price.ts create mode 100644 packages/core/types/src/http/sales-channel/admin/entities.ts create mode 100644 packages/core/types/src/http/sales-channel/admin/payloads.ts create mode 100644 packages/core/types/src/http/sales-channel/admin/queries.ts create mode 100644 packages/core/types/src/http/sales-channel/admin/responses.ts delete mode 100644 packages/core/types/src/http/sales-channel/admin/sales-channel.ts create mode 100644 packages/core/types/src/http/shipping-option/admin/entities.ts create mode 100644 packages/core/types/src/http/shipping-option/admin/index.ts create mode 100644 packages/core/types/src/http/shipping-option/admin/payloads.ts create mode 100644 packages/core/types/src/http/shipping-option/admin/queries.ts create mode 100644 packages/core/types/src/http/shipping-option/admin/responses.ts create mode 100644 packages/core/types/src/http/shipping-option/index.ts create mode 100644 packages/core/types/src/http/shipping-profile/admin/entities.ts create mode 100644 packages/core/types/src/http/shipping-profile/admin/index.ts create mode 100644 packages/core/types/src/http/shipping-profile/admin/payloads.ts create mode 100644 packages/core/types/src/http/shipping-profile/admin/queries.ts create mode 100644 packages/core/types/src/http/shipping-profile/admin/responses.ts create mode 100644 packages/core/types/src/http/shipping-profile/index.ts create mode 100644 packages/core/types/src/http/stock-locations/admin/entities.ts create mode 100644 packages/core/types/src/http/stock-locations/admin/index.ts create mode 100644 packages/core/types/src/http/stock-locations/admin/payloads.ts create mode 100644 packages/core/types/src/http/stock-locations/admin/queries.ts create mode 100644 packages/core/types/src/http/stock-locations/admin/responses.ts delete mode 100644 packages/core/types/src/http/stock-locations/common.ts diff --git a/integration-tests/http/__tests__/fulfillment/admin/fulfillment-sets.spec.ts b/integration-tests/http/__tests__/fulfillment/admin/fulfillment-sets.spec.ts index bfe71fb9cb..75d556af1f 100644 --- a/integration-tests/http/__tests__/fulfillment/admin/fulfillment-sets.spec.ts +++ b/integration-tests/http/__tests__/fulfillment/admin/fulfillment-sets.spec.ts @@ -1,9 +1,9 @@ import { ModuleRegistrationName } from "@medusajs/modules-sdk" +import { IFulfillmentModuleService } from "@medusajs/types" import { adminHeaders, createAdminUser, } from "../../../../helpers/create-admin-user" -import { IFulfillmentModuleService } from "@medusajs/types" const { medusaIntegrationTestRunner } = require("medusa-test-utils") @@ -211,7 +211,7 @@ medusaIntegrationTestRunner({ expect(deleteResponse.data).toEqual( expect.objectContaining({ id: serviceZoneId, - object: "service-zone", + object: "service_zone", deleted: true, parent: expect.objectContaining({ id: fulfillmentSetId, diff --git a/packages/admin-next/dashboard/src/routes/locations/location-details/const.ts b/packages/admin-next/dashboard/src/routes/locations/location-details/const.ts index 4a22fff87d..50aec4d35e 100644 --- a/packages/admin-next/dashboard/src/routes/locations/location-details/const.ts +++ b/packages/admin-next/dashboard/src/routes/locations/location-details/const.ts @@ -1,2 +1,2 @@ export const detailsFields = - "name,*sales_channels,*address,fulfillment_sets.type,fulfillment_sets.name,*fulfillment_sets.service_zones.geo_zones,*fulfillment_sets.service_zones,*fulfillment_sets.service_zones.shipping_options,*fulfillment_sets.service_zones.shipping_options.rules,*fulfillment_sets.service_zones.shipping_options.shipping_profile" + "name,*sales_channels,*address,fulfillment_sets.type,fulfillment_sets.name,*fulfillment_sets.service_zones.geo_zones,*fulfillment_sets.service_zones,*fulfillment_sets.service_zones.shipping_options,*fulfillment_sets.service_zones.shipping_options.rules,*fulfillment_sets.service_zones.shipping_options.shipping_profile,*fulfillment_sets.service_zones.shipping_options.prices" diff --git a/packages/core/js-sdk/src/admin/fulfillment-provider.ts b/packages/core/js-sdk/src/admin/fulfillment-provider.ts new file mode 100644 index 0000000000..b221678db8 --- /dev/null +++ b/packages/core/js-sdk/src/admin/fulfillment-provider.ts @@ -0,0 +1,24 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class FulfillmentProvider { + private client: Client + constructor(client: Client) { + this.client = client + } + + async list( + query?: HttpTypes.AdminFulfillmentProviderListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillment-providers`, + { + method: "GET", + headers, + query, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/fulfillment-set.ts b/packages/core/js-sdk/src/admin/fulfillment-set.ts new file mode 100644 index 0000000000..c477d45f72 --- /dev/null +++ b/packages/core/js-sdk/src/admin/fulfillment-set.ts @@ -0,0 +1,85 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class FulfillmentSet { + private client: Client + constructor(client: Client) { + this.client = client + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/fulfillment-sets/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async createServiceZone( + id: string, + body: HttpTypes.AdminCreateFulfillmentSetServiceZone, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillment-sets/${id}/service-zones`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async retrieveServiceZones( + fulfillmentSetId: string, + serviceZoneId: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillment-sets/${fulfillmentSetId}/service-zones/${serviceZoneId}`, + { + method: "GET", + headers, + query, + } + ) + } + + async updateServiceZone( + fulfillmentSetId: string, + serviceZoneId: string, + body: HttpTypes.AdminUpdateFulfillmentSetServiceZone, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillment-sets/${fulfillmentSetId}/service-zones/${serviceZoneId}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async deleteServiceZone( + fulfillmentSetId: string, + serviceZoneId: string, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillment-sets/${fulfillmentSetId}/service-zones/${serviceZoneId}`, + { + method: "DELETE", + headers, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/fulfillment.ts b/packages/core/js-sdk/src/admin/fulfillment.ts new file mode 100644 index 0000000000..d98792012c --- /dev/null +++ b/packages/core/js-sdk/src/admin/fulfillment.ts @@ -0,0 +1,58 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class Fulfillment { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateFulfillment, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillments`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async cancel( + id: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillments/${id}`, + { + method: "POST", + body: {}, + headers, + } + ) + } + + async createShipment( + id: string, + body: HttpTypes.AdminCreateFulfillmentShipment, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/fulfillments/${id}/shipments`, + { + method: "POST", + headers, + body, + query, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/index.ts b/packages/core/js-sdk/src/admin/index.ts index fb398bd1d3..cee4d52677 100644 --- a/packages/core/js-sdk/src/admin/index.ts +++ b/packages/core/js-sdk/src/admin/index.ts @@ -1,11 +1,17 @@ import { Client } from "../client" import { Customer } from "./customer" +import { Fulfillment } from "./fulfillment" +import { FulfillmentSet } from "./fulfillment-set" import { Invite } from "./invite" +import { Order } from "./order" import { Product } from "./product" import { ProductCollection } from "./product-collection" import { Region } from "./region" +import { SalesChannel } from "./sales-channel" +import { ShippingOption } from "./shipping-option" +import { ShippingProfile } from "./shipping-profile" +import { StockLocation } from "./stock-location" import { Upload } from "./upload" -import { Order } from "./order" export class Admin { public invite: Invite @@ -14,6 +20,12 @@ export class Admin { public product: Product public upload: Upload public region: Region + public stockLocation: StockLocation + public salesChannel: SalesChannel + public fulfillmentSet: FulfillmentSet + public fulfillment: Fulfillment + public shippingOption: ShippingOption + public shippingProfile: ShippingProfile public order: Order constructor(client: Client) { @@ -23,6 +35,12 @@ export class Admin { this.product = new Product(client) this.upload = new Upload(client) this.region = new Region(client) + this.stockLocation = new StockLocation(client) + this.salesChannel = new SalesChannel(client) + this.fulfillmentSet = new FulfillmentSet(client) + this.fulfillment = new Fulfillment(client) + this.shippingOption = new ShippingOption(client) + this.shippingProfile = new ShippingProfile(client) this.order = new Order(client) } } diff --git a/packages/core/js-sdk/src/admin/sales-channel.ts b/packages/core/js-sdk/src/admin/sales-channel.ts new file mode 100644 index 0000000000..022a483e77 --- /dev/null +++ b/packages/core/js-sdk/src/admin/sales-channel.ts @@ -0,0 +1,97 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class SalesChannel { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateSalesChannel, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/sales-channels`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async update( + id: string, + body: HttpTypes.AdminUpdateSalesChannel, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/sales-channels/${id}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/sales-channels/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async retrieve( + id: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/sales-channels/${id}`, + { + method: "GET", + headers, + query, + } + ) + } + + async list( + query?: HttpTypes.AdminSalesChannelListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/sales-channels`, + { + method: "GET", + headers, + query, + } + ) + } + + async updateProducts( + id: string, + body: HttpTypes.AdminUpdateSalesChannelProducts, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/sales-channels/${id}/products`, + { + method: "POST", + headers, + body, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/shipping-option.ts b/packages/core/js-sdk/src/admin/shipping-option.ts new file mode 100644 index 0000000000..b6928c8037 --- /dev/null +++ b/packages/core/js-sdk/src/admin/shipping-option.ts @@ -0,0 +1,82 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class ShippingOption { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateShippingOption, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-options`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async update( + id: string, + body: HttpTypes.AdminUpdateShippingOption, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-options/${id}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/shipping-options/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async list( + query?: HttpTypes.AdminShippingOptionListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-options`, + { + method: "GET", + headers, + query, + } + ) + } + + async updateRules( + id: string, + body: HttpTypes.AdminUpdateShippingOptionRules, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-options/${id}/rules/batch`, + { + method: "POST", + headers, + body, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/shipping-profile.ts b/packages/core/js-sdk/src/admin/shipping-profile.ts new file mode 100644 index 0000000000..0832d7f49b --- /dev/null +++ b/packages/core/js-sdk/src/admin/shipping-profile.ts @@ -0,0 +1,82 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class ShippingProfile { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateShippingProfile, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-profiles`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async update( + id: string, + body: HttpTypes.AdminUpdateShippingProfile, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-profiles/${id}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/shipping-profiles/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async list( + query?: HttpTypes.AdminShippingProfileListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-profiles`, + { + method: "GET", + headers, + query, + } + ) + } + + async retrieve( + id: string, + query?: HttpTypes.SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/shipping-profiles/${id}`, + { + method: "GET", + headers, + query, + } + ) + } +} diff --git a/packages/core/js-sdk/src/admin/stock-location.ts b/packages/core/js-sdk/src/admin/stock-location.ts new file mode 100644 index 0000000000..57ffb6e351 --- /dev/null +++ b/packages/core/js-sdk/src/admin/stock-location.ts @@ -0,0 +1,108 @@ +import { HttpTypes, SelectParams } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class StockLocation { + private client: Client + constructor(client: Client) { + this.client = client + } + + async create( + body: HttpTypes.AdminCreateStockLocation, + query?: SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/stock-locations`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async update( + id: string, + body: HttpTypes.AdminUpdateStockLocation, + query?: SelectParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/stock-locations/${id}`, + { + method: "POST", + headers, + body, + query, + } + ) + } + + async delete(id: string, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/stock-locations/${id}`, + { + method: "DELETE", + headers, + } + ) + } + + async retrieve(id: string, query?: SelectParams, headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/stock-locations/${id}`, + { + method: "GET", + headers, + query, + } + ) + } + + async list( + query?: HttpTypes.AdminStockLocationListParams, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/stock-locations`, + { + method: "GET", + headers, + query, + } + ) + } + + async updateSalesChannels( + id: string, + body: HttpTypes.AdminUpdateStockLocationSalesChannels, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/stock-locations/${id}/sales-channels`, + { + method: "POST", + headers, + body, + } + ) + } + + async createFulfillmentSet( + id: string, + body: HttpTypes.AdminCreateStockLocationFulfillmentSet, + headers?: ClientHeaders + ) { + return await this.client.fetch( + `/admin/stock-locations/${id}/fulfillment-sets`, + { + method: "POST", + headers, + body, + } + ) + } +} diff --git a/packages/core/types/src/http/fulfillment-provider/admin/entities.ts b/packages/core/types/src/http/fulfillment-provider/admin/entities.ts new file mode 100644 index 0000000000..ff49c2d9db --- /dev/null +++ b/packages/core/types/src/http/fulfillment-provider/admin/entities.ts @@ -0,0 +1,8 @@ +export interface AdminFulfillmentProvider { + id: string + name: string + metadata: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/fulfillment-provider/admin/index.ts b/packages/core/types/src/http/fulfillment-provider/admin/index.ts new file mode 100644 index 0000000000..020c34f02c --- /dev/null +++ b/packages/core/types/src/http/fulfillment-provider/admin/index.ts @@ -0,0 +1,3 @@ +export * from "./entities" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/fulfillment-provider/admin/queries.ts b/packages/core/types/src/http/fulfillment-provider/admin/queries.ts new file mode 100644 index 0000000000..93bc7513ac --- /dev/null +++ b/packages/core/types/src/http/fulfillment-provider/admin/queries.ts @@ -0,0 +1,7 @@ +import { FindParams } from "../../common" + +export interface AdminFulfillmentProviderListParams extends FindParams { + id?: string | string[] + q?: string + is_enabled?: boolean +} diff --git a/packages/core/types/src/http/fulfillment-provider/admin/responses.ts b/packages/core/types/src/http/fulfillment-provider/admin/responses.ts new file mode 100644 index 0000000000..fc4c58ad82 --- /dev/null +++ b/packages/core/types/src/http/fulfillment-provider/admin/responses.ts @@ -0,0 +1,7 @@ +import { PaginatedResponse } from "../../common" +import { AdminFulfillmentProvider } from "./entities" + +export interface AdminFulfillmentProviderListResponse + extends PaginatedResponse<{ + fulfillment_providers: AdminFulfillmentProvider[] + }> {} diff --git a/packages/core/types/src/http/fulfillment-provider/index.ts b/packages/core/types/src/http/fulfillment-provider/index.ts new file mode 100644 index 0000000000..26b8eb9dad --- /dev/null +++ b/packages/core/types/src/http/fulfillment-provider/index.ts @@ -0,0 +1 @@ +export * from "./admin" diff --git a/packages/core/types/src/http/fulfillment-set/admin/entities.ts b/packages/core/types/src/http/fulfillment-set/admin/entities.ts new file mode 100644 index 0000000000..7f6bd69c61 --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/admin/entities.ts @@ -0,0 +1,33 @@ +import { GeoZoneType } from "../../../fulfillment" + +export interface AdminGeoZone { + id: string + type: GeoZoneType + country_code: string + province_code: string | null + city: string | null + postal_expression: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminServiceZone { + id: string + fulfillment_set_id: string + geo_zones: AdminGeoZone[] + shipping_options: any[] + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminFulfillmentSet { + id: string + name: string + type: string + service_zones: AdminServiceZone[] + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/fulfillment-set/admin/index.ts b/packages/core/types/src/http/fulfillment-set/admin/index.ts new file mode 100644 index 0000000000..427fd44efc --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/admin/index.ts @@ -0,0 +1,3 @@ +export * from "./entities" +export * from "./payloads" +export * from "./responses" diff --git a/packages/core/types/src/http/fulfillment-set/admin/payloads.ts b/packages/core/types/src/http/fulfillment-set/admin/payloads.ts new file mode 100644 index 0000000000..a3a0a84d84 --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/admin/payloads.ts @@ -0,0 +1,79 @@ +interface AdminUpsertGeoZone { + type: string + country_code: string + metadata?: Record | null +} + +interface AdminUpsertFulfillmentSetServiceZoneCountry + extends AdminUpsertGeoZone { + type: "country" +} + +interface AdminUpsertFulfillmentSetServiceZoneProvince + extends AdminUpsertGeoZone { + type: "province" + province_code: string +} + +interface AdminUpsertFulfillmentSetServiceZoneCity extends AdminUpsertGeoZone { + type: "city" + province_code: string + city: string +} + +interface AdminUpsertFulfillmentSetServiceZoneZip extends AdminUpsertGeoZone { + type: "zip" + province_code: string + city: string + postal_expression: Record +} + +type AdminUpsertFulfillmentSetServiceZoneGeoZone = + | AdminUpsertFulfillmentSetServiceZoneCountry + | AdminUpsertFulfillmentSetServiceZoneProvince + | AdminUpsertFulfillmentSetServiceZoneCity + | AdminUpsertFulfillmentSetServiceZoneZip + +export interface AdminCreateFulfillmentSetServiceZone { + name: string + geo_zones: AdminUpsertFulfillmentSetServiceZoneGeoZone[] +} + +interface AdminUpdateGeoZone extends AdminUpsertGeoZone { + id?: string +} + +interface AdminUpdateFulfillmentSetServiceZoneCountry + extends AdminUpdateGeoZone { + type: "country" +} + +interface AdminUpdateFulfillmentSetServiceZoneProvince + extends AdminUpdateGeoZone { + type: "province" + province_code: string +} + +interface AdminUpdateFulfillmentSetServiceZoneCity extends AdminUpdateGeoZone { + type: "city" + province_code: string + city: string +} + +interface AdminUpdateFulfillmentSetServiceZoneZip extends AdminUpdateGeoZone { + type: "zip" + province_code: string + city: string + postal_expression: Record +} + +type AdminUpdateFulfillmentSetServiceZoneGeoZone = + | AdminUpdateFulfillmentSetServiceZoneCountry + | AdminUpdateFulfillmentSetServiceZoneProvince + | AdminUpdateFulfillmentSetServiceZoneCity + | AdminUpdateFulfillmentSetServiceZoneZip + +export interface AdminUpdateFulfillmentSetServiceZone { + name?: string + geo_zones?: AdminUpdateFulfillmentSetServiceZoneGeoZone[] +} diff --git a/packages/core/types/src/http/fulfillment-set/admin/queries.ts b/packages/core/types/src/http/fulfillment-set/admin/queries.ts new file mode 100644 index 0000000000..51157b9c4c --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/admin/queries.ts @@ -0,0 +1,12 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminFulfillmentSetListParams extends FindParams { + id?: string | string[] + name?: string | string[] + type?: string | string[] + service_zone_id?: string | string[] + created_at?: OperatorMap + updated_at?: OperatorMap + deleted_at?: OperatorMap +} diff --git a/packages/core/types/src/http/fulfillment-set/admin/responses.ts b/packages/core/types/src/http/fulfillment-set/admin/responses.ts new file mode 100644 index 0000000000..3a14cb51fe --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/admin/responses.ts @@ -0,0 +1,16 @@ +import { DeleteResponse } from "../../common" +import { AdminFulfillmentSet, AdminServiceZone } from "./entities" + +export interface AdminServiceZoneResponse { + service_zone: AdminServiceZone +} + +export interface AdminServiceZoneDeleteResponse + extends DeleteResponse<"service_zone", AdminFulfillmentSet> {} + +export interface AdminFulfillmentSetResponse { + fulfillment_set: AdminFulfillmentSet +} + +export interface AdminFulfillmentSetDeleteResponse + extends DeleteResponse<"fulfillment_set"> {} diff --git a/packages/core/types/src/http/fulfillment-set/index.ts b/packages/core/types/src/http/fulfillment-set/index.ts new file mode 100644 index 0000000000..26b8eb9dad --- /dev/null +++ b/packages/core/types/src/http/fulfillment-set/index.ts @@ -0,0 +1 @@ +export * from "./admin" diff --git a/packages/core/types/src/http/fulfillment/admin/entitites.ts b/packages/core/types/src/http/fulfillment/admin/entitites.ts new file mode 100644 index 0000000000..2f0efaf577 --- /dev/null +++ b/packages/core/types/src/http/fulfillment/admin/entitites.ts @@ -0,0 +1,65 @@ +import { AdminFulfillmentProvider } from "../../fulfillment-provider" + +export interface AdminFulfillmentItem { + id: string + title: string + quantity: number + sku: string + barcode: string + line_item_id: string | null + inventory_item_id: string | null + fulfillment_id: string + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminFulfillmentLabel { + id: string + tracking_number: string + tracking_url: string + label_url: string + fulfillment_id: string + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminFulfillmentAddress { + id: string + fulfillment_id: string | null + company: string | null + first_name: string | null + last_name: string | null + address_1: string | null + address_2: string | null + city: string | null + country_code: string | null + province: string | null + postal_code: string | null + phone: string | null + metadata: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminFulfillment { + id: string + location_id: string + provider_id: string + shipping_option_id: string | null + provider: AdminFulfillmentProvider + delivery_address: AdminFulfillmentAddress + items: AdminFulfillmentItem[] + labels: AdminFulfillmentLabel[] + packed_at: string | null + shipped_at: string | null + delivered_at: string | null + canceled_at: string | null + data: Record | null + metadata: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment-address.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment-address.ts deleted file mode 100644 index c0beffb0fb..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment-address.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface AdminFulfillmentAddressResponse { - id: string - fulfillment_id: string | null - company: string | null - first_name: string | null - last_name: string | null - address_1: string | null - address_2: string | null - city: string | null - country_code: string | null - province: string | null - postal_code: string | null - phone: string | null - metadata: Record | null - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment-item.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment-item.ts deleted file mode 100644 index e3638c39f0..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment-item.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface AdminFulfillmentItemResponse { - id: string - title: string - quantity: number - sku: string - barcode: string - line_item_id: string | null - inventory_item_id: string | null - fulfillment_id: string - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment-label.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment-label.ts deleted file mode 100644 index a489584f48..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment-label.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface AdminFulfillmentLabelResponse { - id: string - tracking_number: string - tracking_url: string - label_url: string - fulfillment_id: string - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment-provider.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment-provider.ts deleted file mode 100644 index ed8c8feda9..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment-provider.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface AdminFulfillmentProviderResponse { - id: string - name: string - metadata: Record | null - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment-set.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment-set.ts deleted file mode 100644 index e03c481d84..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment-set.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ServiceZoneResponse } from "./service-zone" - -export interface FulfillmentSetResponse { - id: string - name: string - type: string - metadata: Record | null - service_zones: ServiceZoneResponse[] - created_at: Date - updated_at: Date - deleted_at: Date | null -} - -export interface AdminFulfillmentSetResponse { - fulfillment_set: FulfillmentSetResponse -} diff --git a/packages/core/types/src/http/fulfillment/admin/fulfillment.ts b/packages/core/types/src/http/fulfillment/admin/fulfillment.ts deleted file mode 100644 index 030693472c..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/fulfillment.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { DeleteResponse } from "../../common" -import { AdminFulfillmentAddressResponse } from "./fulfillment-address" -import { AdminFulfillmentItemResponse } from "./fulfillment-item" -import { AdminFulfillmentLabelResponse } from "./fulfillment-label" -import { AdminFulfillmentProviderResponse } from "./fulfillment-provider" - -export interface AdminFulfillmentResponse { - id: string - location_id: string - packed_at: Date | null - shipped_at: Date | null - delivered_at: Date | null - canceled_at: Date | null - data: Record | null - provider_id: string - shipping_option_id: string | null - metadata: Record | null - provider: AdminFulfillmentProviderResponse - delivery_address: AdminFulfillmentAddressResponse - items: AdminFulfillmentItemResponse[] - labels: AdminFulfillmentLabelResponse[] - created_at: Date - updated_at: Date - deleted_at: Date | null -} - -export interface AdminFulfillmentSetsDeleteResponse - extends DeleteResponse<"fulfillment_set"> {} diff --git a/packages/core/types/src/http/fulfillment/admin/geo-zone.ts b/packages/core/types/src/http/fulfillment/admin/geo-zone.ts deleted file mode 100644 index 640bd898a6..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/geo-zone.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { GeoZoneType } from "../../../fulfillment" - -export interface AdminGeoZoneResponse { - id: string - type: GeoZoneType - country_code: string - province_code: string | null - city: string | null - postal_expression: Record | null - metadata: Record | null - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/index.ts b/packages/core/types/src/http/fulfillment/admin/index.ts index cedec1962a..1b4873c3fc 100644 --- a/packages/core/types/src/http/fulfillment/admin/index.ts +++ b/packages/core/types/src/http/fulfillment/admin/index.ts @@ -1,12 +1,3 @@ -export * from "./fulfillment" -export * from "./fulfillment-item" -export * from "./fulfillment-set" -export * from "./fulfillment-label" -export * from "./fulfillment-provider" -export * from "./fulfillment-address" -export * from "./geo-zone" -export * from "./service-zone" -export * from "./shipping-option" -export * from "./shipping-option-rule" -export * from "./shipping-option-type" -export * from "./shipping-profile" +export * from "./entitites" +export * from "./payloads" +export * from "./responses" diff --git a/packages/core/types/src/http/fulfillment/admin/payloads.ts b/packages/core/types/src/http/fulfillment/admin/payloads.ts new file mode 100644 index 0000000000..f39d3da09d --- /dev/null +++ b/packages/core/types/src/http/fulfillment/admin/payloads.ts @@ -0,0 +1,46 @@ +interface AdminCreateFulfillmentItem { + title: string + sku: string + quantity: number + barcode: string + line_item_id?: string + inventory_item_id?: string +} + +interface AdminCreateFulfillmentLabel { + tracking_number: string + tracking_url: string + label_url: string +} + +interface AdminFulfillmentDeliveryAddress { + first_name?: string + last_name?: string + phone?: string + company?: string + address_1?: string + address_2?: string + city?: string + country_code?: string + province?: string + postal_code?: string + metadata?: Record | null +} + +export interface AdminCreateFulfillment { + location_id: string + provider_id: string + delivery_address: AdminFulfillmentDeliveryAddress + items: AdminCreateFulfillmentItem[] + labels: AdminCreateFulfillmentLabel[] + // TODO: Validator requires an empty object for the order field. + // This is a temporary solution until the order field is + // removed or typed correctly. + order: Record + order_id: string + metadata?: Record | null +} + +export interface AdminCreateFulfillmentShipment { + labels: AdminCreateFulfillmentLabel[] +} diff --git a/packages/core/types/src/http/fulfillment/admin/responses.ts b/packages/core/types/src/http/fulfillment/admin/responses.ts new file mode 100644 index 0000000000..a997cd4c2f --- /dev/null +++ b/packages/core/types/src/http/fulfillment/admin/responses.ts @@ -0,0 +1,5 @@ +import { AdminFulfillment } from "./entitites" + +export interface AdminFulfillmentResponse { + fulfillment: AdminFulfillment +} diff --git a/packages/core/types/src/http/fulfillment/admin/service-zone.ts b/packages/core/types/src/http/fulfillment/admin/service-zone.ts deleted file mode 100644 index 24aac0878a..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/service-zone.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { FulfillmentSetResponse } from "./fulfillment-set" -import { AdminGeoZoneResponse } from "./geo-zone" - -export interface AdminServiceZoneResponse { - service_zone: ServiceZoneResponse -} - -export interface AdminServiceZoneDeleteResponse { - id: string - object: "service-zone" - deleted: boolean - parent: FulfillmentSetResponse -} - -export interface ServiceZoneResponse { - id: string - name: string - metadata: Record | null - geo_zones: AdminGeoZoneResponse[] - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/shipping-option-rule.ts b/packages/core/types/src/http/fulfillment/admin/shipping-option-rule.ts deleted file mode 100644 index 5d24244f9f..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/shipping-option-rule.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface AdminShippingOptionRuleResponse { - id: string - attribute: string - operator: string - value: { value: string | string[] } | null - shipping_option_id: string - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/shipping-option-type.ts b/packages/core/types/src/http/fulfillment/admin/shipping-option-type.ts deleted file mode 100644 index f2cfbbf438..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/shipping-option-type.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface AdminShippingOptionTypeResponse { - id: string - label: string - description: string - code: string - shipping_option_id: string - created_at: Date - updated_at: Date - deleted_at: Date | null -} diff --git a/packages/core/types/src/http/fulfillment/admin/shipping-option.ts b/packages/core/types/src/http/fulfillment/admin/shipping-option.ts deleted file mode 100644 index 844af91cd4..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/shipping-option.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { ShippingOptionPriceType } from "../../../fulfillment" -import { AdminServiceZoneResponse } from "./service-zone" -import { AdminShippingOptionTypeResponse } from "./shipping-option-type" -import { AdminShippingOptionRuleResponse } from "./shipping-option-rule" -import { AdminShippingProfileResponse } from "./shipping-profile" -import { AdminFulfillmentProviderResponse } from "./fulfillment-provider" -import { AdminPriceSetPriceResponse } from "../../pricing" -import { DeleteResponse, PaginatedResponse } from "../../common" - -interface AdminShippingOptionResponse { - id: string - name: string - price_type: ShippingOptionPriceType - service_zone_id: string - shipping_profile_id: string - provider_id: string - shipping_option_type_id: string | null - data: Record | null - metadata: Record | null - service_zone: AdminServiceZoneResponse - shipping_profile: AdminShippingProfileResponse - provider: AdminFulfillmentProviderResponse - type: AdminShippingOptionTypeResponse - rules: AdminShippingOptionRuleResponse[] - prices: AdminPriceSetPriceResponse[] - created_at: Date - updated_at: Date - deleted_at: Date | null -} - -export interface AdminShippingOptionRetrieveResponse { - shipping_option: AdminShippingOptionResponse -} - -export type AdminShippingOptionListResponse = PaginatedResponse<{ - shipping_options: AdminShippingOptionResponse[] -}> - -export interface AdminShippingOptionDeleteResponse - extends DeleteResponse<"shipping_option"> {} diff --git a/packages/core/types/src/http/fulfillment/admin/shipping-profile.ts b/packages/core/types/src/http/fulfillment/admin/shipping-profile.ts deleted file mode 100644 index 0eb753202c..0000000000 --- a/packages/core/types/src/http/fulfillment/admin/shipping-profile.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DeleteResponse, PaginatedResponse } from "../../common" - -export interface ShippingProfileResponse { - id: string - name: string - type: string - metadata: Record | null - created_at: Date - updated_at: Date - deleted_at: Date | null -} - -export interface AdminShippingProfileResponse { - shipping_profile: ShippingProfileResponse -} - -export type AdminShippingProfilesResponse = PaginatedResponse<{ - shipping_profiles: ShippingProfileResponse[] -}> - -export interface AdminShippingProfileDeleteResponse - extends DeleteResponse<"shipping_profile"> {} diff --git a/packages/core/types/src/http/index.ts b/packages/core/types/src/http/index.ts index 92e9a58f0f..55b38cf9d3 100644 --- a/packages/core/types/src/http/index.ts +++ b/packages/core/types/src/http/index.ts @@ -4,7 +4,10 @@ export * from "./cart" export * from "./collection" export * from "./common" export * from "./customer" +export * from "./file" export * from "./fulfillment" +export * from "./fulfillment-provider" +export * from "./fulfillment-set" export * from "./inventory" export * from "./invite" export * from "./order" @@ -16,7 +19,8 @@ export * from "./promotion" export * from "./region" export * from "./reservation" export * from "./sales-channel" +export * from "./shipping-option" +export * from "./shipping-profile" export * from "./stock-locations" export * from "./tax" export * from "./user" -export * from "./file" diff --git a/packages/core/types/src/http/pricing/admin/entitites.ts b/packages/core/types/src/http/pricing/admin/entitites.ts new file mode 100644 index 0000000000..5e5a368dc0 --- /dev/null +++ b/packages/core/types/src/http/pricing/admin/entitites.ts @@ -0,0 +1,31 @@ +/** + * TODO: Not sure how to type this properly, as it's unclear to me what is returned + * by our API. As an example we return `price_list: null` but `price_list_id` is missing. + * + * Type in model that aren't currently in this type: + * - price_list_id + * - price_list + * - price_rules + * - rules_count + * + * Also `raw_amount` is typed as `Record` but it seems to always return: + * ```ts + * { + * amount: number + * precision: number + * } + * ``` + */ +export interface AdminPrice { + id: string + title: string + currency_code: string + amount: number + raw_amount: Record + min_quantity: number | null + max_quantity: number | null + price_set_id: string + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/pricing/admin/index.ts b/packages/core/types/src/http/pricing/admin/index.ts new file mode 100644 index 0000000000..f28a420d22 --- /dev/null +++ b/packages/core/types/src/http/pricing/admin/index.ts @@ -0,0 +1 @@ +export * from "./entitites" diff --git a/packages/core/types/src/http/pricing/index.ts b/packages/core/types/src/http/pricing/index.ts index 32d0b05b1e..26b8eb9dad 100644 --- a/packages/core/types/src/http/pricing/index.ts +++ b/packages/core/types/src/http/pricing/index.ts @@ -1 +1 @@ -export * from "./price" +export * from "./admin" diff --git a/packages/core/types/src/http/pricing/price.ts b/packages/core/types/src/http/pricing/price.ts deleted file mode 100644 index 0b11d74193..0000000000 --- a/packages/core/types/src/http/pricing/price.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface AdminPriceSetPriceResponse { - id: string - amount: number - currency_code: string - created_at: string - updated_at: string -} diff --git a/packages/core/types/src/http/sales-channel/admin/entities.ts b/packages/core/types/src/http/sales-channel/admin/entities.ts new file mode 100644 index 0000000000..e06cce6213 --- /dev/null +++ b/packages/core/types/src/http/sales-channel/admin/entities.ts @@ -0,0 +1,10 @@ +export interface AdminSalesChannel { + id: string + name: string + description: string | null + is_disabled: boolean + metadata: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/sales-channel/admin/index.ts b/packages/core/types/src/http/sales-channel/admin/index.ts index ac40bbe6d6..1f82a2ead5 100644 --- a/packages/core/types/src/http/sales-channel/admin/index.ts +++ b/packages/core/types/src/http/sales-channel/admin/index.ts @@ -1 +1,4 @@ -export * from "./sales-channel" +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/sales-channel/admin/payloads.ts b/packages/core/types/src/http/sales-channel/admin/payloads.ts new file mode 100644 index 0000000000..e6c0ce1509 --- /dev/null +++ b/packages/core/types/src/http/sales-channel/admin/payloads.ts @@ -0,0 +1,18 @@ +export interface AdminCreateSalesChannel { + name: string + description?: string + is_disabled?: boolean + metadata?: Record +} + +export interface AdminUpdateSalesChannel { + name?: string + description?: string | null + is_disabled?: boolean + metadata?: Record +} + +export interface AdminUpdateSalesChannelProducts { + add?: string[] + remove?: string[] +} diff --git a/packages/core/types/src/http/sales-channel/admin/queries.ts b/packages/core/types/src/http/sales-channel/admin/queries.ts new file mode 100644 index 0000000000..8df1de741a --- /dev/null +++ b/packages/core/types/src/http/sales-channel/admin/queries.ts @@ -0,0 +1,17 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminSalesChannelListParams extends FindParams { + id?: string | string[] + q?: string + name?: string | string[] + description?: string + is_disabled?: boolean + location_id?: string | string[] + publishable_key_id?: string | string[] + created_at?: OperatorMap + updated_at?: OperatorMap + deleted_at?: OperatorMap + $and?: AdminSalesChannelListParams[] + $or?: AdminSalesChannelListParams[] +} diff --git a/packages/core/types/src/http/sales-channel/admin/responses.ts b/packages/core/types/src/http/sales-channel/admin/responses.ts new file mode 100644 index 0000000000..9a1e02dbec --- /dev/null +++ b/packages/core/types/src/http/sales-channel/admin/responses.ts @@ -0,0 +1,13 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminSalesChannel } from "./entities" + +export interface AdminSalesChannelResponse { + sales_channel: AdminSalesChannel +} + +export type AdminSalesChannelListResponse = PaginatedResponse<{ + sales_channels: AdminSalesChannel[] +}> + +export interface AdminSalesChannelDeleteResponse + extends DeleteResponse<"sales_channel"> {} diff --git a/packages/core/types/src/http/sales-channel/admin/sales-channel.ts b/packages/core/types/src/http/sales-channel/admin/sales-channel.ts deleted file mode 100644 index 984e1604cb..0000000000 --- a/packages/core/types/src/http/sales-channel/admin/sales-channel.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { PaginatedResponse } from "../../common" - -interface SalesChannelResponse { - id: string - name: string - description: string | null - is_disabled: boolean - metadata: Record | null -} - -export type AdminSalesChannelListResponse = PaginatedResponse<{ - sales_channels: SalesChannelResponse[] -}> - -export interface AdminSalesChannelResponse { - sales_channel: SalesChannelResponse -} diff --git a/packages/core/types/src/http/shipping-option/admin/entities.ts b/packages/core/types/src/http/shipping-option/admin/entities.ts new file mode 100644 index 0000000000..dbdfd0cd23 --- /dev/null +++ b/packages/core/types/src/http/shipping-option/admin/entities.ts @@ -0,0 +1,48 @@ +import { ShippingOptionPriceType } from "../../../fulfillment" +import { AdminFulfillmentProvider } from "../../fulfillment-provider" +import { AdminServiceZone } from "../../fulfillment-set" +import { AdminPrice } from "../../pricing" +import { AdminShippingProfile } from "../../shipping-profile" + +export interface AdminShippingOptionType { + id: string + label: string + description: string + code: string + shipping_option_id: string + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminShippingOptionRule { + id: string + attribute: string + operator: string + value: string | string[] | null + shipping_option_id: string + created_at: string + updated_at: string + deleted_at: string | null +} + +export interface AdminShippingOption { + id: string + name: string + price_type: ShippingOptionPriceType + service_zone_id: string + service_zone: AdminServiceZone + provider_id: string + provider: AdminFulfillmentProvider + shipping_option_type_id: string | null + type: AdminShippingOptionType + shipping_profile_id: string + shipping_profile: AdminShippingProfile + rules: AdminShippingOptionRule[] + prices: AdminPrice[] + data: Record | null + metadata: Record | null + created_at: Date + updated_at: Date + deleted_at: Date | null +} diff --git a/packages/core/types/src/http/shipping-option/admin/index.ts b/packages/core/types/src/http/shipping-option/admin/index.ts new file mode 100644 index 0000000000..1f82a2ead5 --- /dev/null +++ b/packages/core/types/src/http/shipping-option/admin/index.ts @@ -0,0 +1,4 @@ +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/shipping-option/admin/payloads.ts b/packages/core/types/src/http/shipping-option/admin/payloads.ts new file mode 100644 index 0000000000..d8b9fc65a2 --- /dev/null +++ b/packages/core/types/src/http/shipping-option/admin/payloads.ts @@ -0,0 +1,75 @@ +import { RuleOperatorType } from "../../../common" +import { ShippingOptionPriceType } from "../../../fulfillment" + +interface AdminCreateShippingOptionRule { + operator: RuleOperatorType + attribute: string + value: string | string[] +} + +interface AdminCreateShippingOptionType { + label: string + description: string + code: string +} + +interface AdminCreateShippingOptionPriceWithCurrency { + currency_code: string + amount: number +} + +interface AdminCreateShippingOptionPriceWithRegion { + region_id: string + amount: number +} + +export interface AdminCreateShippingOption { + name: string + service_zone_id: string + shipping_profile_id: string + data?: Record + price_type: ShippingOptionPriceType + provider_id: string + type: AdminCreateShippingOptionType + prices: ( + | AdminCreateShippingOptionPriceWithCurrency + | AdminCreateShippingOptionPriceWithRegion + )[] + rules?: AdminCreateShippingOptionRule[] +} + +interface AdminUpdateShippingOptionRule extends AdminCreateShippingOptionRule { + id: string +} + +interface AdminUpdateShippingOptionPriceWithCurrency { + id?: string + currency_code?: string + amount?: number +} + +interface AdminUpdateShippingOptionPriceWithRegion { + id?: string + region_id?: string + amount?: number +} + +export interface AdminUpdateShippingOption { + name?: string + data?: Record + price_type?: ShippingOptionPriceType + provider_id?: string + shipping_profile_id?: string + type?: AdminCreateShippingOptionType + prices?: ( + | AdminUpdateShippingOptionPriceWithCurrency + | AdminUpdateShippingOptionPriceWithRegion + )[] + rules?: (AdminUpdateShippingOptionRule | AdminCreateShippingOptionRule)[] +} + +export interface AdminUpdateShippingOptionRules { + create?: any[] + update?: any[] + delete?: string[] +} diff --git a/packages/core/types/src/http/shipping-option/admin/queries.ts b/packages/core/types/src/http/shipping-option/admin/queries.ts new file mode 100644 index 0000000000..ccd74fc1e6 --- /dev/null +++ b/packages/core/types/src/http/shipping-option/admin/queries.ts @@ -0,0 +1,14 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminShippingOptionListParams extends FindParams { + id?: string | string[] + q?: string + service_zone_id?: string + shipping_profile_id?: string + provider_id?: string + shipping_option_type_id?: string + created_at?: OperatorMap + updated_at?: OperatorMap + deleted_at?: OperatorMap +} diff --git a/packages/core/types/src/http/shipping-option/admin/responses.ts b/packages/core/types/src/http/shipping-option/admin/responses.ts new file mode 100644 index 0000000000..f2c54c944a --- /dev/null +++ b/packages/core/types/src/http/shipping-option/admin/responses.ts @@ -0,0 +1,23 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminShippingOption, AdminShippingOptionRule } from "./entities" + +export interface AdminShippingOptionResponse { + shipping_option: AdminShippingOption +} + +export type AdminShippingOptionListResponse = PaginatedResponse<{ + shipping_options: AdminShippingOption[] +}> + +export interface AdminShippingOptionDeleteResponse + extends DeleteResponse<"shipping_option"> {} + +export interface AdminUpdateShippingOptionRulesResponse { + created: AdminShippingOptionRule[] + updated: AdminShippingOptionRule[] + deleted: { + ids: string[] + object: "shipping_option_rule" + deleted: boolean + } +} diff --git a/packages/core/types/src/http/shipping-option/index.ts b/packages/core/types/src/http/shipping-option/index.ts new file mode 100644 index 0000000000..26b8eb9dad --- /dev/null +++ b/packages/core/types/src/http/shipping-option/index.ts @@ -0,0 +1 @@ +export * from "./admin" diff --git a/packages/core/types/src/http/shipping-profile/admin/entities.ts b/packages/core/types/src/http/shipping-profile/admin/entities.ts new file mode 100644 index 0000000000..78e0cad09f --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/admin/entities.ts @@ -0,0 +1,9 @@ +export interface AdminShippingProfile { + id: string + name: string + type: string + metadata: Record | null + created_at: string + updated_at: string + deleted_at: string | null +} diff --git a/packages/core/types/src/http/shipping-profile/admin/index.ts b/packages/core/types/src/http/shipping-profile/admin/index.ts new file mode 100644 index 0000000000..1f82a2ead5 --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/admin/index.ts @@ -0,0 +1,4 @@ +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/shipping-profile/admin/payloads.ts b/packages/core/types/src/http/shipping-profile/admin/payloads.ts new file mode 100644 index 0000000000..1e7a05e2d0 --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/admin/payloads.ts @@ -0,0 +1,11 @@ +export interface AdminCreateShippingProfile { + name: string + type: string + metadata?: Record +} + +export interface AdminUpdateShippingProfile { + name?: string + type?: string + metadata?: Record | null +} diff --git a/packages/core/types/src/http/shipping-profile/admin/queries.ts b/packages/core/types/src/http/shipping-profile/admin/queries.ts new file mode 100644 index 0000000000..b9e93673d5 --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/admin/queries.ts @@ -0,0 +1,14 @@ +import { OperatorMap } from "../../../dal" +import { FindParams } from "../../common" + +export interface AdminShippingProfileListParams extends FindParams { + id?: string | string[] + q?: string + type?: string + name?: string + created_at?: OperatorMap + updated_at?: OperatorMap + deleted_at?: OperatorMap + $and?: AdminShippingProfileListParams[] + $or?: AdminShippingProfileListParams[] +} diff --git a/packages/core/types/src/http/shipping-profile/admin/responses.ts b/packages/core/types/src/http/shipping-profile/admin/responses.ts new file mode 100644 index 0000000000..480091e34f --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/admin/responses.ts @@ -0,0 +1,13 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminShippingProfile } from "./entities" + +export interface AdminShippingProfileResponse { + shipping_profile: AdminShippingProfile +} + +export type AdminShippingProfileListResponse = PaginatedResponse<{ + shipping_profiles: AdminShippingProfile[] +}> + +export interface AdminShippingProfileDeleteResponse + extends DeleteResponse<"shipping_profile"> {} diff --git a/packages/core/types/src/http/shipping-profile/index.ts b/packages/core/types/src/http/shipping-profile/index.ts new file mode 100644 index 0000000000..26b8eb9dad --- /dev/null +++ b/packages/core/types/src/http/shipping-profile/index.ts @@ -0,0 +1 @@ +export * from "./admin" diff --git a/packages/core/types/src/http/stock-locations/admin/entities.ts b/packages/core/types/src/http/stock-locations/admin/entities.ts new file mode 100644 index 0000000000..d91f33ebe8 --- /dev/null +++ b/packages/core/types/src/http/stock-locations/admin/entities.ts @@ -0,0 +1,22 @@ +import { AdminSalesChannel } from "../../sales-channel" + +export interface AdminStockLocationAddress { + id: string + address_1: string + address_2: string | null + company: string | null + country_code: string + city: string | null + phone: string | null + postal_code: string | null + province: string | null +} + +export interface AdminStockLocation { + id: string + name: string + address_id: string + address?: AdminStockLocationAddress + sales_channels?: AdminSalesChannel[] + fulfillment_sets?: any[] +} diff --git a/packages/core/types/src/http/stock-locations/admin/index.ts b/packages/core/types/src/http/stock-locations/admin/index.ts new file mode 100644 index 0000000000..1f82a2ead5 --- /dev/null +++ b/packages/core/types/src/http/stock-locations/admin/index.ts @@ -0,0 +1,4 @@ +export * from "./entities" +export * from "./payloads" +export * from "./queries" +export * from "./responses" diff --git a/packages/core/types/src/http/stock-locations/admin/payloads.ts b/packages/core/types/src/http/stock-locations/admin/payloads.ts new file mode 100644 index 0000000000..2bcbc72d4b --- /dev/null +++ b/packages/core/types/src/http/stock-locations/admin/payloads.ts @@ -0,0 +1,34 @@ +interface AdminUpsertStockLocationAddress { + address_1: string + address_2?: string + company?: string + country_code: string + city?: string + phone?: string + postal_code?: string + province?: string +} + +export interface AdminCreateStockLocation { + name: string + address_id?: string + address?: AdminUpsertStockLocationAddress + metadata?: Record +} + +export interface AdminUpdateStockLocation { + name?: string + address_id?: string + address?: AdminUpsertStockLocationAddress + metadata?: Record +} + +export interface AdminUpdateStockLocationSalesChannels { + add?: string[] + remove?: string[] +} + +export interface AdminCreateStockLocationFulfillmentSet { + name: string + type: string +} diff --git a/packages/core/types/src/http/stock-locations/admin/queries.ts b/packages/core/types/src/http/stock-locations/admin/queries.ts new file mode 100644 index 0000000000..a552319240 --- /dev/null +++ b/packages/core/types/src/http/stock-locations/admin/queries.ts @@ -0,0 +1,11 @@ +import { FindParams } from "../../common" + +export interface AdminStockLocationListParams extends FindParams { + id?: string | string[] + q?: string + name?: string | string[] + address_id?: string | string[] + sales_channel_id?: string | string[] + $and?: AdminStockLocationListParams[] + $or?: AdminStockLocationListParams[] +} diff --git a/packages/core/types/src/http/stock-locations/admin/responses.ts b/packages/core/types/src/http/stock-locations/admin/responses.ts new file mode 100644 index 0000000000..89fcc40be7 --- /dev/null +++ b/packages/core/types/src/http/stock-locations/admin/responses.ts @@ -0,0 +1,14 @@ +import { DeleteResponse, PaginatedResponse } from "../../common" +import { AdminStockLocation } from "./entities" + +export interface AdminStockLocationResponse { + stock_location: AdminStockLocation +} + +export interface AdminStockLocationListResponse + extends PaginatedResponse<{ + stock_locations: AdminStockLocation[] + }> {} + +export interface AdminStockLocationDeleteResponse + extends DeleteResponse<"stock_location"> {} diff --git a/packages/core/types/src/http/stock-locations/common.ts b/packages/core/types/src/http/stock-locations/common.ts deleted file mode 100644 index 90309b66c5..0000000000 --- a/packages/core/types/src/http/stock-locations/common.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { AdminFulfillmentSetResponse } from "../fulfillment" - -export type AdminStockLocationAddressResponse = { - id?: string - address_1: string - address_2?: string | null - company?: string | null - country_code: string - city?: string | null - phone?: string | null - postal_code?: string | null - province?: string | null - metadata?: Record | null - created_at: string | Date - updated_at: string | Date - deleted_at: string | Date | null -} - -export interface AdminStockLocationResponse { - id: string - name: string - metadata: Record | null - address_id: string - address?: AdminStockLocationAddressResponse - created_at: string | Date - updated_at: string | Date - deleted_at: string | Date | null - - fulfillment_sets?: AdminFulfillmentSetResponse[] -} diff --git a/packages/core/types/src/http/stock-locations/index.ts b/packages/core/types/src/http/stock-locations/index.ts index 488a94fdff..26b8eb9dad 100644 --- a/packages/core/types/src/http/stock-locations/index.ts +++ b/packages/core/types/src/http/stock-locations/index.ts @@ -1 +1 @@ -export * from "./common" +export * from "./admin" diff --git a/packages/core/types/src/sales-channel/mutations.ts b/packages/core/types/src/sales-channel/mutations.ts index 8f97641b34..11cfc6f361 100644 --- a/packages/core/types/src/sales-channel/mutations.ts +++ b/packages/core/types/src/sales-channel/mutations.ts @@ -30,7 +30,7 @@ export interface UpdateSalesChannelDTO { /** * The description of the sales channel. */ - description?: string + description?: string | null /** * Whether the sales channel is disabled. diff --git a/packages/medusa/src/api/admin/fulfillment-providers/validators.ts b/packages/medusa/src/api/admin/fulfillment-providers/validators.ts index 11ae13dae2..dd49441191 100644 --- a/packages/medusa/src/api/admin/fulfillment-providers/validators.ts +++ b/packages/medusa/src/api/admin/fulfillment-providers/validators.ts @@ -1,7 +1,19 @@ import { z } from "zod" -import { createSelectParams } from "../../utils/validators" +import { OptionalBooleanValidator } from "../../utils/common-validators" +import { createFindParams } from "../../utils/validators" export type AdminFulfillmentProvidersParamsType = z.infer< typeof AdminFulfillmentProvidersParams > -export const AdminFulfillmentProvidersParams = createSelectParams() +export const AdminFulfillmentProvidersParams = createFindParams({ + limit: 50, + offset: 0, +}) + .merge( + z.object({ + id: z.union([z.string(), z.array(z.string())]).optional(), + is_enabled: OptionalBooleanValidator, + q: z.string().optional(), + }) + ) + .strict() diff --git a/packages/medusa/src/api/admin/fulfillment-sets/[id]/route.ts b/packages/medusa/src/api/admin/fulfillment-sets/[id]/route.ts index 4dbfb951df..a85c7c0a59 100644 --- a/packages/medusa/src/api/admin/fulfillment-sets/[id]/route.ts +++ b/packages/medusa/src/api/admin/fulfillment-sets/[id]/route.ts @@ -1,5 +1,5 @@ -import { AdminFulfillmentSetsDeleteResponse } from "@medusajs/types" import { deleteFulfillmentSetsWorkflow } from "@medusajs/core-flows" +import { HttpTypes } from "@medusajs/types" import { AuthenticatedMedusaRequest, @@ -8,7 +8,7 @@ import { export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { id } = req.params diff --git a/packages/medusa/src/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route.ts b/packages/medusa/src/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route.ts index dcdadaed2a..9311de204f 100644 --- a/packages/medusa/src/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route.ts +++ b/packages/medusa/src/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route.ts @@ -5,7 +5,6 @@ import { import { ModuleRegistrationName } from "@medusajs/modules-sdk" import { AdminFulfillmentSetResponse, - AdminServiceZoneDeleteResponse, AdminServiceZoneResponse, IFulfillmentModuleService, } from "@medusajs/types" @@ -94,7 +93,7 @@ export const POST = async ( export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { id, zone_id } = req.params @@ -120,7 +119,7 @@ export const DELETE = async ( res.status(200).json({ id: zone_id, - object: "service-zone", + object: "service_zone", deleted: true, parent: fulfillmentSet, }) diff --git a/packages/medusa/src/api/admin/fulfillment-sets/query-config.ts b/packages/medusa/src/api/admin/fulfillment-sets/query-config.ts index ca5084f7d9..97c54bb89b 100644 --- a/packages/medusa/src/api/admin/fulfillment-sets/query-config.ts +++ b/packages/medusa/src/api/admin/fulfillment-sets/query-config.ts @@ -14,11 +14,6 @@ export const retrieveTransformQueryConfig = { isList: false, } -export const listTransformQueryConfig = { - ...retrieveTransformQueryConfig, - isList: true, -} - export const retrieveServiceZoneTransformQueryConfig = { defaults: [ "id", diff --git a/packages/medusa/src/api/admin/fulfillment-sets/validators.ts b/packages/medusa/src/api/admin/fulfillment-sets/validators.ts index 6b2ee46a3d..dc0d85e68e 100644 --- a/packages/medusa/src/api/admin/fulfillment-sets/validators.ts +++ b/packages/medusa/src/api/admin/fulfillment-sets/validators.ts @@ -1,5 +1,5 @@ import { z } from "zod" -import { createFindParams, createOperatorMap } from "../../utils/validators" +import { createSelectParams } from "../../utils/validators" import { geoZoneCitySchema, geoZoneCountrySchema, @@ -7,7 +7,7 @@ import { geoZoneZipSchema, } from "./validators/geo-zone" -export const AdminServiceZonesParams = createFindParams() +export const AdminServiceZonesParams = createSelectParams() export type AdminServiceZonesParamsType = z.infer< typeof AdminServiceZonesParams > @@ -44,20 +44,7 @@ export const AdminUpdateFulfillmentSetServiceZonesSchema = z }) .strict() -export const AdminFulfillmentSetParams = createFindParams({ - limit: 20, - offset: 0, -}).merge( - z.object({ - id: z.union([z.string(), z.array(z.string())]).optional(), - name: z.union([z.string(), z.array(z.string())]).optional(), - type: z.union([z.string(), z.array(z.string())]).optional(), - service_zone_id: z.union([z.string(), z.array(z.string())]).optional(), - created_at: createOperatorMap().optional(), - updated_at: createOperatorMap().optional(), - deleted_at: createOperatorMap().optional(), - }) -) +export const AdminFulfillmentSetParams = createSelectParams() export type AdminCreateFulfillmentSetServiceZonesType = z.infer< typeof AdminCreateFulfillmentSetServiceZonesSchema diff --git a/packages/medusa/src/api/admin/sales-channels/validators.ts b/packages/medusa/src/api/admin/sales-channels/validators.ts index 7df80e4011..8c579b6c58 100644 --- a/packages/medusa/src/api/admin/sales-channels/validators.ts +++ b/packages/medusa/src/api/admin/sales-channels/validators.ts @@ -1,4 +1,5 @@ import { z } from "zod" +import { OptionalBooleanValidator } from "../../utils/common-validators" import { createFindParams, createOperatorMap, @@ -22,6 +23,7 @@ export const AdminGetSalesChannelsParams = createFindParams({ id: z.union([z.string(), z.array(z.string())]).optional(), name: z.union([z.string(), z.array(z.string())]).optional(), description: z.string().optional(), + is_disabled: OptionalBooleanValidator, created_at: createOperatorMap().optional(), updated_at: createOperatorMap().optional(), deleted_at: createOperatorMap().optional(), @@ -47,7 +49,7 @@ export type AdminUpdateSalesChannelType = z.infer< > export const AdminUpdateSalesChannel = z.object({ name: z.string().optional(), - description: z.string().optional(), + description: z.string().nullable().optional(), is_disabled: z.boolean().optional(), metadata: z.record(z.string(), z.unknown()).optional(), }) diff --git a/packages/medusa/src/api/admin/shipping-options/[id]/route.ts b/packages/medusa/src/api/admin/shipping-options/[id]/route.ts index 509e99cbc6..4fdc8ea8d1 100644 --- a/packages/medusa/src/api/admin/shipping-options/[id]/route.ts +++ b/packages/medusa/src/api/admin/shipping-options/[id]/route.ts @@ -1,22 +1,18 @@ -import { - AdminShippingOptionDeleteResponse, - AdminShippingOptionRetrieveResponse, - FulfillmentWorkflow, -} from "@medusajs/types" -import { AdminUpdateShippingOptionType } from "../validators" import { deleteShippingOptionsWorkflow, updateShippingOptionsWorkflow, } from "@medusajs/core-flows" +import { FulfillmentWorkflow, HttpTypes } from "@medusajs/types" import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../../types/routing" import { refetchShippingOption } from "../helpers" +import { AdminUpdateShippingOptionType } from "../validators" export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const shippingOptionPayload = req.validatedBody @@ -43,7 +39,7 @@ export const POST = async ( export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const shippingOptionId = req.params.id diff --git a/packages/medusa/src/api/admin/shipping-options/route.ts b/packages/medusa/src/api/admin/shipping-options/route.ts index 9a67fcb6d4..d8ec727a22 100644 --- a/packages/medusa/src/api/admin/shipping-options/route.ts +++ b/packages/medusa/src/api/admin/shipping-options/route.ts @@ -1,25 +1,22 @@ import { createShippingOptionsWorkflow } from "@medusajs/core-flows" +import { HttpTypes } from "@medusajs/types" import { ContainerRegistrationKeys, remoteQueryObjectFromString, } from "@medusajs/utils" -import { - AdminShippingOptionListResponse, - AdminShippingOptionRetrieveResponse, -} from "@medusajs/types" import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../types/routing" +import { refetchShippingOption } from "./helpers" import { AdminCreateShippingOptionType, AdminGetShippingOptionsParamsType, } from "./validators" -import { refetchShippingOption } from "./helpers" export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) @@ -44,7 +41,7 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const shippingOptionPayload = req.validatedBody diff --git a/packages/medusa/src/api/admin/shipping-options/validators.ts b/packages/medusa/src/api/admin/shipping-options/validators.ts index 72c1455d54..eea2bf2d37 100644 --- a/packages/medusa/src/api/admin/shipping-options/validators.ts +++ b/packages/medusa/src/api/admin/shipping-options/validators.ts @@ -3,7 +3,11 @@ import { ShippingOptionPriceType as ShippingOptionPriceTypeEnum, } from "@medusajs/utils" import { z } from "zod" -import { createFindParams, createSelectParams } from "../../utils/validators" +import { + createFindParams, + createOperatorMap, + createSelectParams, +} from "../../utils/validators" export type AdminGetShippingOptionParamsType = z.infer< typeof AdminGetShippingOptionParams @@ -16,7 +20,21 @@ export type AdminGetShippingOptionsParamsType = z.infer< export const AdminGetShippingOptionsParams = createFindParams({ offset: 0, limit: 20, -}) +}).merge( + z.object({ + id: z.union([z.string(), z.array(z.string())]).optional(), + q: z.string().optional(), + service_zone_id: z.union([z.string(), z.array(z.string())]).optional(), + shipping_profile_id: z.union([z.string(), z.array(z.string())]).optional(), + provider_id: z.union([z.string(), z.array(z.string())]).optional(), + shipping_option_type_id: z + .union([z.string(), z.array(z.string())]) + .optional(), + created_at: createOperatorMap().optional(), + updated_at: createOperatorMap().optional(), + deleted_at: createOperatorMap().optional(), + }) +) /** * SHIPPING OPTIONS RULES @@ -127,6 +145,8 @@ export const AdminUpdateShippingOption = z ) .array() .optional(), - rules: AdminUpdateShippingOptionRule.or(AdminCreateShippingOptionRule).array().optional(), + rules: AdminUpdateShippingOptionRule.or(AdminCreateShippingOptionRule) + .array() + .optional(), }) .strict() diff --git a/packages/medusa/src/api/admin/shipping-profiles/[id]/route.ts b/packages/medusa/src/api/admin/shipping-profiles/[id]/route.ts index 6f55445305..e77856c5ec 100644 --- a/packages/medusa/src/api/admin/shipping-profiles/[id]/route.ts +++ b/packages/medusa/src/api/admin/shipping-profiles/[id]/route.ts @@ -3,11 +3,7 @@ import { updateShippingProfilesWorkflow, } from "@medusajs/core-flows" import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { - AdminShippingProfileDeleteResponse, - AdminShippingProfileResponse, - IFulfillmentModuleService, -} from "@medusajs/types" +import { HttpTypes, IFulfillmentModuleService } from "@medusajs/types" import { AuthenticatedMedusaRequest, MedusaResponse, @@ -20,7 +16,7 @@ import { export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const shippingProfile = await refetchShippingProfile( req.params.id, @@ -33,7 +29,7 @@ export const GET = async ( export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { id } = req.params @@ -57,7 +53,7 @@ export const DELETE = async ( export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { id } = req.params diff --git a/packages/medusa/src/api/admin/shipping-profiles/route.ts b/packages/medusa/src/api/admin/shipping-profiles/route.ts index d562533eff..4d46d671d8 100644 --- a/packages/medusa/src/api/admin/shipping-profiles/route.ts +++ b/packages/medusa/src/api/admin/shipping-profiles/route.ts @@ -1,8 +1,5 @@ import { createShippingProfilesWorkflow } from "@medusajs/core-flows" -import { - AdminShippingProfileResponse, - AdminShippingProfilesResponse, -} from "@medusajs/types" +import { HttpTypes } from "@medusajs/types" import { ContainerRegistrationKeys, remoteQueryObjectFromString, @@ -11,15 +8,15 @@ import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../types/routing" +import { refetchShippingProfile } from "./helpers" import { AdminCreateShippingProfileType, AdminGetShippingProfilesParamsType, } from "./validators" -import { refetchShippingProfile } from "./helpers" export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const shippingProfilePayload = req.validatedBody @@ -38,7 +35,7 @@ export const POST = async ( export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) diff --git a/packages/medusa/src/api/admin/shipping-profiles/validators.ts b/packages/medusa/src/api/admin/shipping-profiles/validators.ts index 4377b085d1..77d60f72e3 100644 --- a/packages/medusa/src/api/admin/shipping-profiles/validators.ts +++ b/packages/medusa/src/api/admin/shipping-profiles/validators.ts @@ -18,6 +18,7 @@ export const AdminGetShippingProfilesParams = createFindParams({ offset: 0, }).merge( z.object({ + id: z.union([z.string(), z.array(z.string())]).optional(), q: z.string().optional(), type: z.string().optional(), name: z.string().optional(), diff --git a/packages/medusa/src/api/admin/stock-locations/validators.ts b/packages/medusa/src/api/admin/stock-locations/validators.ts index 1407b0485f..f1e8a68924 100644 --- a/packages/medusa/src/api/admin/stock-locations/validators.ts +++ b/packages/medusa/src/api/admin/stock-locations/validators.ts @@ -1,5 +1,9 @@ import { z } from "zod" -import { createFindParams, createSelectParams } from "../../utils/validators" +import { + createFindParams, + createOperatorMap, + createSelectParams, +} from "../../utils/validators" export type AdminGetStockLocationParamsType = z.infer< typeof AdminGetStockLocationParams @@ -19,6 +23,9 @@ export const AdminGetStockLocationsParams = createFindParams({ name: z.union([z.string(), z.array(z.string())]).optional(), address_id: z.union([z.string(), z.array(z.string())]).optional(), sales_channel_id: z.union([z.string(), z.array(z.string())]).optional(), + created_at: createOperatorMap().optional(), + updated_at: createOperatorMap().optional(), + deleted_at: createOperatorMap().optional(), $and: z.lazy(() => AdminGetStockLocationsParams.array()).optional(), $or: z.lazy(() => AdminGetStockLocationsParams.array()).optional(), }) diff --git a/packages/modules/fulfillment/src/models/fulfillment-provider.ts b/packages/modules/fulfillment/src/models/fulfillment-provider.ts index 2cc586c264..9ec905463a 100644 --- a/packages/modules/fulfillment/src/models/fulfillment-provider.ts +++ b/packages/modules/fulfillment/src/models/fulfillment-provider.ts @@ -1,4 +1,4 @@ -import { generateEntityId } from "@medusajs/utils" +import { Searchable, generateEntityId } from "@medusajs/utils" import { BeforeCreate, Entity, @@ -9,6 +9,7 @@ import { @Entity() export default class FulfillmentProvider { + @Searchable() @PrimaryKey({ columnType: "text" }) id: string diff --git a/packages/modules/fulfillment/src/models/shipping-option.ts b/packages/modules/fulfillment/src/models/shipping-option.ts index e939f60278..011219fd98 100644 --- a/packages/modules/fulfillment/src/models/shipping-option.ts +++ b/packages/modules/fulfillment/src/models/shipping-option.ts @@ -2,6 +2,7 @@ import { createPsqlIndexStatementHelper, DALUtils, generateEntityId, + Searchable, ShippingOptionPriceType, } from "@medusajs/utils" @@ -68,6 +69,7 @@ export default class ShippingOption { @PrimaryKey({ columnType: "text" }) id: string + @Searchable() @Property({ columnType: "text" }) name: string