feat: Add metadata to shipping options endpoints (#13554)

This commit is contained in:
Bastien
2025-09-19 12:28:20 +02:00
committed by GitHub
parent 5b7187c261
commit bb6cc586f7
4 changed files with 74 additions and 15 deletions
@@ -292,6 +292,54 @@ medusaIntegrationTestRunner({
metadata: null, metadata: null,
}) })
}) })
it("should retrieve a shipping option with metadata successfully", async () => {
const shippingOptionPayload = {
name: "Test shipping option with metadata",
service_zone_id: fulfillmentSet.service_zones[0].id,
shipping_profile_id: shippingProfile.id,
provider_id: "manual_test-provider",
price_type: "flat",
type: {
label: "Test type",
description: "Test description",
code: "test-code",
},
prices: [{ currency_code: "usd", amount: 1000 }],
metadata: {
priority: "high",
tracking: "enabled",
carrier: "express",
specialHandling: true,
},
}
const {
data: { shipping_option: shippingOption },
} = await api.post(
`/admin/shipping-options`,
shippingOptionPayload,
adminHeaders
)
const shippingOptionRes = await api.get(
`/admin/shipping-options/${shippingOption.id}`,
adminHeaders
)
expect(shippingOptionRes.data.shipping_option).toEqual(
expect.objectContaining({
id: expect.any(String),
name: "Test shipping option with metadata",
metadata: {
priority: "high",
tracking: "enabled",
carrier: "express",
specialHandling: true,
},
})
)
})
}) })
describe("POST /admin/shipping-options", () => { describe("POST /admin/shipping-options", () => {
@@ -178,6 +178,10 @@ export interface AdminCreateShippingOption {
* documentation. * documentation.
*/ */
rules?: AdminCreateShippingOptionRule[] rules?: AdminCreateShippingOptionRule[]
/**
* Custom key-value pairs that can be added to the shipping option.
*/
metadata?: Record<string, unknown>
} }
export interface AdminUpdateShippingOptionRule export interface AdminUpdateShippingOptionRule
@@ -282,6 +286,10 @@ export interface AdminUpdateShippingOption {
* documentation. * documentation.
*/ */
rules?: (AdminUpdateShippingOptionRule | AdminCreateShippingOptionRule)[] rules?: (AdminUpdateShippingOptionRule | AdminCreateShippingOptionRule)[]
/**
* Custom key-value pairs that can be added to the shipping option.
*/
metadata?: Record<string, unknown>
} }
export interface AdminUpdateShippingOptionRules { export interface AdminUpdateShippingOptionRules {
@@ -142,6 +142,7 @@ export const AdminCreateShippingOption = z
AdminCreateShippingOptionPriceWithRegion AdminCreateShippingOptionPriceWithRegion
).array(), ).array(),
rules: AdminCreateShippingOptionRule.array().optional(), rules: AdminCreateShippingOptionRule.array().optional(),
metadata: z.record(z.unknown()).optional(),
}) })
.strict() .strict()
.refine((data) => isDefined(data.type_id) !== isDefined(data.type), { .refine((data) => isDefined(data.type_id) !== isDefined(data.type), {
@@ -170,6 +171,7 @@ export const AdminUpdateShippingOption = z
rules: AdminUpdateShippingOptionRule.or(AdminCreateShippingOptionRule) rules: AdminUpdateShippingOptionRule.or(AdminCreateShippingOptionRule)
.array() .array()
.optional(), .optional(),
metadata: z.record(z.unknown()).optional(),
}) })
.strict() .strict()
.refine( .refine(
@@ -6,6 +6,7 @@ export const defaultStoreShippingOptionsFields = [
"shipping_profile_id", "shipping_profile_id",
"fulfillment_provider_id", "fulfillment_provider_id",
"shipping_option_type_id", "shipping_option_type_id",
"metadata",
] ]
export const listTransformQueryConfig = { export const listTransformQueryConfig = {