diff --git a/.changeset/eight-coats-attend.md b/.changeset/eight-coats-attend.md new file mode 100644 index 0000000000..d94a8af820 --- /dev/null +++ b/.changeset/eight-coats-attend.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +chore(medusa): add missing fields and filters to product variants endpoint diff --git a/packages/medusa/src/api/admin/product-variants/query-config.ts b/packages/medusa/src/api/admin/product-variants/query-config.ts index 408268b814..b990544375 100644 --- a/packages/medusa/src/api/admin/product-variants/query-config.ts +++ b/packages/medusa/src/api/admin/product-variants/query-config.ts @@ -2,6 +2,7 @@ export const defaultAdminProductVariantFields = [ "id", "title", "sku", + "thumbnail", "barcode", "ean", "upc", @@ -20,6 +21,7 @@ export const defaultAdminProductVariantFields = [ "product_id", "created_at", "updated_at", + "deleted_at", "*product", "*prices", "*options", diff --git a/packages/medusa/src/api/admin/product-variants/validators.ts b/packages/medusa/src/api/admin/product-variants/validators.ts index 8b811e489b..01a31db0bc 100644 --- a/packages/medusa/src/api/admin/product-variants/validators.ts +++ b/packages/medusa/src/api/admin/product-variants/validators.ts @@ -10,6 +10,9 @@ export const AdminGetProductVariantsParamsFields = z.object({ id: z.union([z.string(), z.array(z.string())]).optional(), manage_inventory: booleanString().optional(), allow_backorder: booleanString().optional(), + ean: z.union([z.string(), z.array(z.string())]).optional(), + upc: z.union([z.string(), z.array(z.string())]).optional(), + barcode: z.union([z.string(), z.array(z.string())]).optional(), created_at: createOperatorMap().optional(), updated_at: createOperatorMap().optional(), deleted_at: createOperatorMap().optional(), diff --git a/packages/medusa/src/api/admin/products/middlewares.ts b/packages/medusa/src/api/admin/products/middlewares.ts index cd85d09645..7bd4e75c9a 100644 --- a/packages/medusa/src/api/admin/products/middlewares.ts +++ b/packages/medusa/src/api/admin/products/middlewares.ts @@ -27,7 +27,6 @@ import { AdminGetProductParams, AdminGetProductsParams, AdminGetProductVariantParams, - AdminGetProductVariantsParams, AdminImportProducts, AdminUpdateProduct, AdminUpdateProductOption, @@ -36,6 +35,7 @@ import { CreateProduct, CreateProductVariant, } from "./validators" +import { AdminGetProductVariantsParams } from "../product-variants/validators" const upload = multer({ storage: multer.memoryStorage() }) diff --git a/packages/medusa/src/api/admin/products/query-config.ts b/packages/medusa/src/api/admin/products/query-config.ts index 7e73e70a14..eb16779167 100644 --- a/packages/medusa/src/api/admin/products/query-config.ts +++ b/packages/medusa/src/api/admin/products/query-config.ts @@ -1,32 +1,7 @@ -export const defaultAdminProductsVariantFields = [ - "id", - "product_id", - "thumbnail", - "title", - "sku", - "allow_backorder", - "manage_inventory", - "hs_code", - "origin_country", - "mid_code", - "material", - "weight", - "length", - "height", - "width", - "created_at", - "updated_at", - "deleted_at", - "metadata", - "variant_rank", - "ean", - "upc", - "barcode", - "*prices", - "prices.price_rules.value", - "prices.price_rules.attribute", - "*options", -] +import { defaultAdminProductVariantFields } from "../product-variants/query-config" + +export const defaultAdminProductsVariantFields = + defaultAdminProductVariantFields.filter((field) => field !== "*product") export const retrieveVariantConfig = { defaults: defaultAdminProductsVariantFields, diff --git a/packages/medusa/src/api/admin/products/validators.ts b/packages/medusa/src/api/admin/products/validators.ts index 4a26c2e184..863e3d3fd7 100644 --- a/packages/medusa/src/api/admin/products/validators.ts +++ b/packages/medusa/src/api/admin/products/validators.ts @@ -13,6 +13,7 @@ import { createSelectParams, WithAdditionalData, } from "../../utils/validators" +import { AdminGetProductVariantsParamsFields } from "../product-variants/validators" const statusEnum = z.nativeEnum(ProductStatus) @@ -20,29 +21,6 @@ export const AdminGetProductParams = createSelectParams() export const AdminGetProductVariantParams = createSelectParams() export const AdminGetProductOptionParams = createSelectParams() -export const AdminGetProductVariantsParamsFields = z.object({ - q: z.string().optional(), - id: z.union([z.string(), z.array(z.string())]).optional(), - manage_inventory: booleanString().optional(), - allow_backorder: booleanString().optional(), - ean: z.union([z.string(), z.array(z.string())]).optional(), - upc: z.union([z.string(), z.array(z.string())]).optional(), - barcode: z.union([z.string(), z.array(z.string())]).optional(), - created_at: createOperatorMap().optional(), - updated_at: createOperatorMap().optional(), - deleted_at: createOperatorMap().optional(), -}) - -export type AdminGetProductVariantsParamsType = z.infer< - typeof AdminGetProductVariantsParams -> -export const AdminGetProductVariantsParams = createFindParams({ - offset: 0, - limit: 50, -}) - .merge(AdminGetProductVariantsParamsFields) - .merge(applyAndAndOrOperators(AdminGetProductVariantsParamsFields)) - export const AdminGetProductsParamsDirectFields = z.object({ variants: AdminGetProductVariantsParamsFields.omit({ q: true }) .merge(