diff --git a/packages/core/core-flows/src/draft-order/steps/create-draft-order-line-item-adjustments.ts b/packages/core/core-flows/src/draft-order/steps/create-draft-order-line-item-adjustments.ts index f1b7fe05b5..57c37fee97 100644 --- a/packages/core/core-flows/src/draft-order/steps/create-draft-order-line-item-adjustments.ts +++ b/packages/core/core-flows/src/draft-order/steps/create-draft-order-line-item-adjustments.ts @@ -8,11 +8,35 @@ import { export const createDraftOrderLineItemAdjustmentsStepId = "create-draft-order-line-item-adjustments" -interface CreateDraftOrderLineItemAdjustmentsStepInput { +/** + * The details of the line item adjustments to create. + */ +export interface CreateDraftOrderLineItemAdjustmentsStepInput { + /** + * The ID of the draft order to create the line item adjustments for. + */ order_id: string + /** + * The line item adjustments to create. + */ lineItemAdjustmentsToCreate: CreateLineItemAdjustmentDTO[] } +/** + * This step creates line item adjustments for a draft order. + * + * @example + * const data = createDraftOrderLineItemAdjustmentsStep({ + * order_id: "order_123", + * lineItemAdjustmentsToCreate: [ + * { + * item_id: "orli_123", + * code: "PROMO_123", + * amount: 10, + * } + * ] + * }) + */ export const createDraftOrderLineItemAdjustmentsStep = createStep( createDraftOrderLineItemAdjustmentsStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/create-draft-order-shipping-method-adjustments.ts b/packages/core/core-flows/src/draft-order/steps/create-draft-order-shipping-method-adjustments.ts index b5daa71b12..77f9aa24bf 100644 --- a/packages/core/core-flows/src/draft-order/steps/create-draft-order-shipping-method-adjustments.ts +++ b/packages/core/core-flows/src/draft-order/steps/create-draft-order-shipping-method-adjustments.ts @@ -8,10 +8,30 @@ import { export const createDraftOrderShippingMethodAdjustmentsStepId = "create-draft-order-shipping-method-adjustments" -interface CreateDraftOrderShippingMethodAdjustmentsStepInput { +/** + * The details of the shipping method adjustments to create. + */ +export interface CreateDraftOrderShippingMethodAdjustmentsStepInput { + /** + * The shipping method adjustments to create. + */ shippingMethodAdjustmentsToCreate: CreateShippingMethodAdjustmentDTO[] } +/** + * This step creates shipping method adjustments for a draft order. + * + * @example + * const data = createDraftOrderShippingMethodAdjustmentsStep({ + * shippingMethodAdjustmentsToCreate: [ + * { + * shipping_method_id: "sm_123", + * code: "PROMO_123", + * amount: 10, + * } + * ] + * }) + */ export const createDraftOrderShippingMethodAdjustmentsStep = createStep( createDraftOrderShippingMethodAdjustmentsStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/get-draft-order-promotion-context.ts b/packages/core/core-flows/src/draft-order/steps/get-draft-order-promotion-context.ts index 361d342295..9dd91b264e 100644 --- a/packages/core/core-flows/src/draft-order/steps/get-draft-order-promotion-context.ts +++ b/packages/core/core-flows/src/draft-order/steps/get-draft-order-promotion-context.ts @@ -2,10 +2,34 @@ import { Modules } from "@medusajs/framework/utils" import { createStep, StepResponse } from "@medusajs/framework/workflows-sdk" import { IOrderModuleService, OrderDTO } from "@medusajs/types" -interface GetDraftOrderPromotionContextStepInput { +/** + * The details of the draft order to get the promotion context for. + */ +export interface GetDraftOrderPromotionContextStepInput { + /** + * The draft order to get the promotion context for. + */ order: OrderDTO } +/** + * This step gets the promotion context for a draft order. + * + * :::note + * + * You can retrieve a draft order's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = getDraftOrderPromotionContextStep({ + * order: { + * id: "order_123", + * // other order details... + * } + * }) + */ export const getDraftOrderPromotionContextStep = createStep( "get-draft-order-promotion-context", async ({ order }: GetDraftOrderPromotionContextStepInput, { container }) => { diff --git a/packages/core/core-flows/src/draft-order/steps/remove-draft-order-line-item-adjustments.ts b/packages/core/core-flows/src/draft-order/steps/remove-draft-order-line-item-adjustments.ts index 4037d3f381..9083d938b0 100644 --- a/packages/core/core-flows/src/draft-order/steps/remove-draft-order-line-item-adjustments.ts +++ b/packages/core/core-flows/src/draft-order/steps/remove-draft-order-line-item-adjustments.ts @@ -4,10 +4,24 @@ import { IOrderModuleService } from "@medusajs/types" export const removeDraftOrderLineItemAdjustmentsStepId = "remove-draft-order-line-item-adjustments" -interface RemoveDraftOrderLineItemAdjustmentsStepInput { +/** + * The details of the line item adjustments to remove. + */ +export interface RemoveDraftOrderLineItemAdjustmentsStepInput { + /** + * The IDs of the line item adjustments to remove. + */ lineItemAdjustmentIdsToRemove: string[] } +/** + * This step removes line item adjustments from a draft order. + * + * @example + * const data = removeDraftOrderLineItemAdjustmentsStep({ + * lineItemAdjustmentIdsToRemove: ["adj_123", "adj_456"], + * }) + */ export const removeDraftOrderLineItemAdjustmentsStep = createStep( removeDraftOrderLineItemAdjustmentsStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/remove-draft-order-shipping-method-adjustments.ts b/packages/core/core-flows/src/draft-order/steps/remove-draft-order-shipping-method-adjustments.ts index 5a054caba2..35d9084d51 100644 --- a/packages/core/core-flows/src/draft-order/steps/remove-draft-order-shipping-method-adjustments.ts +++ b/packages/core/core-flows/src/draft-order/steps/remove-draft-order-shipping-method-adjustments.ts @@ -5,10 +5,24 @@ import { IOrderModuleService } from "@medusajs/types" export const removeDraftOrderShippingMethodAdjustmentsStepId = "remove-draft-order-shipping-method-adjustments" -interface RemoveDraftOrderShippingMethodAdjustmentsStepInput { +/** + * The details of the shipping method adjustments to remove. + */ +export interface RemoveDraftOrderShippingMethodAdjustmentsStepInput { + /** + * The IDs of the shipping method adjustments to remove. + */ shippingMethodAdjustmentIdsToRemove: string[] } +/** + * This step removes shipping method adjustments from a draft order. + * + * @example + * const data = removeDraftOrderShippingMethodAdjustmentsStep({ + * shippingMethodAdjustmentIdsToRemove: ["adj_123", "adj_456"], + * }) + */ export const removeDraftOrderShippingMethodAdjustmentsStep = createStep( removeDraftOrderShippingMethodAdjustmentsStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/restore-draft-order-shipping-methods.ts b/packages/core/core-flows/src/draft-order/steps/restore-draft-order-shipping-methods.ts index 9241dd914d..03dbe0dc92 100644 --- a/packages/core/core-flows/src/draft-order/steps/restore-draft-order-shipping-methods.ts +++ b/packages/core/core-flows/src/draft-order/steps/restore-draft-order-shipping-methods.ts @@ -5,20 +5,68 @@ import { BigNumberInput, IOrderModuleService } from "@medusajs/types" export const restoreDraftOrderShippingMethodsStepId = "restore-draft-order-shipping-methods" -interface RestoreDraftOrderShippingMethodsStepInput { +/** + * The details of the shipping methods to restore. + */ +export interface RestoreDraftOrderShippingMethodsStepInput { + /** + * The shipping methods to restore. + */ shippingMethods: { + /** + * The ID of the shipping method. + */ id: string + /** + * The shipping method's details before the edit. + */ before: { + /** + * The ID of the shipping option. + */ shipping_option_id: string + /** + * The amount of the shipping method. + */ amount: BigNumberInput } + /** + * The shipping method's details after the edit. + */ after: { + /** + * The ID of the shipping option. + */ shipping_option_id: string + /** + * The amount of the shipping method. + */ amount: BigNumberInput } }[] } +/** + * This step restores the shipping methods of a draft order. + * It's useful when you need to revert changes made by a canceled draft order edit. + * + * @example + * const data = restoreDraftOrderShippingMethodsStep({ + * shippingMethods: [ + * { + * id: "shipping_method_123", + * before: { + * shipping_option_id: "shipping_option_123", + * amount: 10 + * }, + * after: { + * shipping_option_id: "shipping_option_123", + * amount: 10 + * } + * }, + * ], + * }) + */ export const restoreDraftOrderShippingMethodsStep = createStep( restoreDraftOrderShippingMethodsStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/update-draft-order-promotions.ts b/packages/core/core-flows/src/draft-order/steps/update-draft-order-promotions.ts index e341931d6b..fad64efe96 100644 --- a/packages/core/core-flows/src/draft-order/steps/update-draft-order-promotions.ts +++ b/packages/core/core-flows/src/draft-order/steps/update-draft-order-promotions.ts @@ -8,12 +8,39 @@ import { IPromotionModuleService } from "@medusajs/types" export const updateDraftOrderPromotionsStepId = "update-draft-order-promotions" -interface UpdateDraftOrderPromotionsStepInput { +/** + * The details of the promotions to update in a draft order. + */ +export interface UpdateDraftOrderPromotionsStepInput { + /** + * The ID of the draft order. + */ id: string + /** + * The promo codes to add, replace, or remove from the draft order. + */ promo_codes: string[] + /** + * The action to perform on the promotions. You can either: + * + * - Add the promotions to the draft order. + * - Replace the existing promotions with the new ones. + * - Remove the promotions from the draft order. + */ action?: PromotionActions } +/** + * This step updates the promotions of a draft order. + * + * @example + * const data = updateDraftOrderPromotionsStep({ + * id: "order_123", + * promo_codes: ["PROMO_123", "PROMO_456"], + * // Import from "@medusajs/framework/utils" + * action: PromotionActions.ADD, + * }) + */ export const updateDraftOrderPromotionsStep = createStep( updateDraftOrderPromotionsStepId, async function (data: UpdateDraftOrderPromotionsStepInput, { container }) { diff --git a/packages/core/core-flows/src/draft-order/steps/update-draft-order-shipping-metod.ts b/packages/core/core-flows/src/draft-order/steps/update-draft-order-shipping-metod.ts index 54ca15cd00..ed919b602c 100644 --- a/packages/core/core-flows/src/draft-order/steps/update-draft-order-shipping-metod.ts +++ b/packages/core/core-flows/src/draft-order/steps/update-draft-order-shipping-metod.ts @@ -5,14 +5,42 @@ import { BigNumberInput, IOrderModuleService } from "@medusajs/types" export const updateDraftOrderShippingMethodStepId = "update-draft-order-shipping-method" -interface UpdateDraftOrderShippingMethodStepInput { +/** + * The details of the shipping method to update in a draft order. + */ +export interface UpdateDraftOrderShippingMethodStepInput { + /** + * The ID of the draft order. + */ order_id: string + /** + * The ID of the shipping method to update. + */ shipping_method_id: string + /** + * The ID of the shipping method's option. + */ shipping_option_id?: string + /** + * The amount of the shipping method. + */ amount?: BigNumberInput + /** + * The metadata of the shipping method. + */ metadata?: Record | null } +/** + * This step updates the shipping method of a draft order. + * + * @example + * const data = updateDraftOrderShippingMethodStep({ + * order_id: "order_123", + * shipping_method_id: "sm_123", + * amount: 10, + * }) + */ export const updateDraftOrderShippingMethodStep = createStep( updateDraftOrderShippingMethodStepId, async function ( diff --git a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-change.ts b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-change.ts index 71fb9f626b..7c6d27e443 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-change.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-change.ts @@ -3,13 +3,45 @@ import { OrderChangeDTO, OrderDTO } from "@medusajs/types" import { throwIfOrderChangeIsNotActive } from "../../order/utils/order-validation" import { throwIfNotDraftOrder } from "../utils/validation" -interface ValidateDraftOrderChangeStepInput { +/** + * The details of the draft order and its change to validate. + */ +export interface ValidateDraftOrderChangeStepInput { + /** + * The draft order to validate. + */ order: OrderDTO + /** + * The order change to validate. + */ orderChange: OrderChangeDTO } export const validateDraftOrderChangeStepId = "validate-draft-order-change" +/** + * This step validates that a draft order and its change are valid. It throws an error if the + * order is not a draft order or the order change is not active. + * + * :::note + * + * You can retrieve a draft order and its change's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validateDraftOrderChangeStep({ + * order: { + * id: "order_123", + * // other order details... + * }, + * orderChange: { + * id: "orch_123", + * // other order change details... + * } + * }) + */ export const validateDraftOrderChangeStep = createStep( validateDraftOrderChangeStepId, async function ({ order, orderChange }: ValidateDraftOrderChangeStepInput) { diff --git a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-remove-action-item.ts b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-remove-action-item.ts index 94ac749e23..1fc6766e29 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-remove-action-item.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-remove-action-item.ts @@ -4,11 +4,43 @@ import { ChangeActionType, MedusaError } from "@medusajs/framework/utils" import { createStep } from "@medusajs/framework/workflows-sdk" import { OrderChangeDTO, OrderWorkflow } from "@medusajs/types" +/** + * The details of the draft order and its change to validate. + */ export interface ValidateDraftOrderUpdateActionItemStepInput { + /** + * The details of the item removal action. + */ input: OrderWorkflow.DeleteOrderEditItemActionWorkflowInput + /** + * The order change to validate. + */ orderChange: OrderChangeDTO } +/** + * This step validates that an item change can be removed from a draft order edit. It throws an error if the + * item change is not in the draft order edit, or if the item change is not adding or updating an item. + * + * :::note + * + * You can retrieve a draft order change's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validateDraftOrderRemoveActionItemStep({ + * input: { + * action_id: "action_123", + * order_id: "order_123", + * }, + * orderChange: { + * id: "orch_123", + * // other order change details... + * } + * }) + */ export const validateDraftOrderRemoveActionItemStep = createStep( "validate-draft-order-remove-action-item", async function ({ diff --git a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-shipping-method-action.ts b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-shipping-method-action.ts index f41c0b0c43..1a7527ca95 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-shipping-method-action.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-shipping-method-action.ts @@ -6,11 +6,43 @@ import { OrderWorkflow, } from "@medusajs/types" +/** + * The details of the draft order and its change to validate. + */ export interface ValidateDraftOrderShippingMethodActionStepInput { + /** + * The details of the shipping method removal action. + */ input: OrderWorkflow.DeleteOrderEditShippingMethodWorkflowInput + /** + * The order change to validate. + */ orderChange: OrderChangeDTO } +/** + * This step validates that a shipping method change can be removed from a draft order edit. It throws an error if the + * shipping method change is not in the draft order edit, or if the shipping method change is not adding a shipping method. + * + * :::note + * + * You can retrieve a draft order change's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validateDraftOrderShippingMethodActionStep({ + * input: { + * action_id: "action_123", + * order_id: "order_123", + * }, + * orderChange: { + * id: "orch_123", + * // other order change details... + * } + * }) + */ export const validateDraftOrderShippingMethodActionStep = createStep( "validate-draft-order-shipping-method-action", async function ({ diff --git a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-update-action-item.ts b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-update-action-item.ts index fce40bf7d2..d0bc71bdbc 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-draft-order-update-action-item.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-draft-order-update-action-item.ts @@ -4,11 +4,43 @@ import { ChangeActionType, MedusaError } from "@medusajs/framework/utils" import { createStep } from "@medusajs/framework/workflows-sdk" import { OrderChangeDTO, OrderWorkflow } from "@medusajs/types" +/** + * The details of the draft order and its change to validate. + */ export interface ValidateDraftOrderUpdateActionItemStepInput { + /** + * The details of updating a new item in a draft order edit. + */ input: OrderWorkflow.UpdateOrderEditAddNewItemWorkflowInput + /** + * The order change to validate. + */ orderChange: OrderChangeDTO } +/** + * This step validates that a new item can be updated in a draft order edit. It throws an error if the + * item change is not in the draft order edit, or if the item change is not adding an item. + * + * :::note + * + * You can retrieve a draft order change's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validateDraftOrderUpdateActionItemStep({ + * input: { + * action_id: "action_123", + * order_id: "order_123", + * }, + * orderChange: { + * id: "orch_123", + * // other order change details... + * } + * }) + */ export const validateDraftOrderUpdateActionItemStep = createStep( "validate-draft-order-update-action-item", async function ({ diff --git a/packages/core/core-flows/src/draft-order/steps/validate-draft-order.ts b/packages/core/core-flows/src/draft-order/steps/validate-draft-order.ts index f555bcced3..355d1a4a00 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-draft-order.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-draft-order.ts @@ -2,10 +2,34 @@ import { MedusaError, OrderStatus } from "@medusajs/framework/utils" import { createStep } from "@medusajs/framework/workflows-sdk" import { OrderDTO } from "@medusajs/types" -interface ValidateDraftOrderStepInput { +/** + * The details of the draft order to validate. + */ +export interface ValidateDraftOrderStepInput { + /** + * The draft order to validate. + */ order: OrderDTO } +/** + * This step validates that an order is a draft order. It throws an error otherwise. + * + * :::note + * + * You can retrieve a draft order's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validateDraftOrderStep({ + * order: { + * id: "order_123", + * // other order details... + * } + * }) + */ export const validateDraftOrderStep = createStep( "validate-draft-order", async function ({ order }: ValidateDraftOrderStepInput) { diff --git a/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-add.ts b/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-add.ts index ac12471b23..0eba83e2a7 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-add.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-add.ts @@ -7,11 +7,43 @@ import { export const validatePromoCodesToAddId = "validate-promo-codes-to-add" -interface ValidatePromoCodesToAddStepInput { +/** + * The details of the promo codes to add to a draft order. + */ +export interface ValidatePromoCodesToAddStepInput { + /** + * The promo codes to add to the draft order. + */ promo_codes: string[] + /** + * The promotions to add to the draft order. + */ promotions: PromotionDTO[] } +/** + * This step validates that the promo codes to add to a draft order are valid. It throws an error if the + * promo codes don't exist or are inactive. + * + * :::note + * + * You can retrieve a promotion's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validatePromoCodesToAddStep({ + * promo_codes: ["PROMO_123", "PROMO_456"], + * promotions: [{ + * id: "promo_123", + * code: "PROMO_123" + * }, { + * id: "promo_456", + * code: "PROMO_456" + * }], + * }) + */ export const validatePromoCodesToAddStep = createStep( validatePromoCodesToAddId, async function (input: ValidatePromoCodesToAddStepInput) { diff --git a/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-remove.ts b/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-remove.ts index 71190608d8..8e64e43a92 100644 --- a/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-remove.ts +++ b/packages/core/core-flows/src/draft-order/steps/validate-promo-codes-to-remove.ts @@ -4,11 +4,43 @@ import { throwIfCodesAreMissing } from "../utils/validation" export const validatePromoCodesToRemoveId = "validate-promo-codes-to-remove" -interface ValidatePromoCodesToRemoveStepInput { +/** + * The details of the promo codes removal to validate. + */ +export interface ValidatePromoCodesToRemoveStepInput { + /** + * The promo codes to remove from the draft order. + */ promo_codes: string[] + /** + * The promotions to remove from the draft order. + */ promotions: PromotionDTO[] } +/** + * This step validates that the promo codes can be removed from a draft order. It throws an error if the promo + * codes don't exist. + * + * :::note + * + * You can retrieve a promotion's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = validatePromoCodesToRemoveStep({ + * promo_codes: ["PROMO_123", "PROMO_456"], + * promotions: [{ + * id: "promo_123", + * code: "PROMO_123" + * }, { + * id: "promo_456", + * code: "PROMO_456" + * }], + * }) + */ export const validatePromoCodesToRemoveStep = createStep( validatePromoCodesToRemoveId, async function (input: ValidatePromoCodesToRemoveStepInput) { diff --git a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-items.ts b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-items.ts index c5b4ef37ec..cd52be7e5c 100644 --- a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-items.ts +++ b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-items.ts @@ -24,6 +24,29 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const addDraftOrderItemsWorkflowId = "add-draft-order-items" +/** + * This workflow adds items to a draft order. It's used by the + * [Add Item to Draft Order Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersidedititems). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around adding items to + * a draft order. + * + * @example + * const { result } = await addDraftOrderItemsWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * items: [{ + * variant_id: "variant_123", + * quantity: 1 + * }] + * } + * }) + * + * @summary + * + * Add items to a draft order. + */ export const addDraftOrderItemsWorkflow = createWorkflow( addDraftOrderItemsWorkflowId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-promotions.ts b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-promotions.ts index 0c1c1d1ddf..ce39321e1b 100644 --- a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-promotions.ts +++ b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-promotions.ts @@ -22,11 +22,40 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const addDraftOrderPromotionWorkflowId = "add-draft-order-promotion" -interface AddDraftOrderPromotionWorkflowInput { +/** + * The details of the promotions to add to a draft order. + */ +export interface AddDraftOrderPromotionWorkflowInput { + /** + * The ID of the draft order to add the promotions to. + */ order_id: string + /** + * The codes of the promotions to add to the draft order. + */ promo_codes: string[] } +/** + * This workflow adds promotions to a draft order. It's used by the + * [Add Promotion to Draft Order Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditpromotions). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around adding promotions to + * a draft order. + * + * @example + * const { result } = await addDraftOrderPromotionWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * promo_codes: ["PROMO_CODE_1", "PROMO_CODE_2"] + * } + * }) + * + * @summary + * + * Add promotions to a draft order. + */ export const addDraftOrderPromotionWorkflow = createWorkflow( addDraftOrderPromotionWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-shipping-methods.ts b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-shipping-methods.ts index 147f349445..4ceba34182 100644 --- a/packages/core/core-flows/src/draft-order/workflows/add-draft-order-shipping-methods.ts +++ b/packages/core/core-flows/src/draft-order/workflows/add-draft-order-shipping-methods.ts @@ -26,21 +26,46 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const addDraftOrderShippingMethodsWorkflowId = "add-draft-order-shipping-methods" -interface AddDraftOrderShippingMethodsWorkflowInput { +/** + * The details of the shipping methods to add to a draft order. + */ +export interface AddDraftOrderShippingMethodsWorkflowInput { /** * The ID of the draft order to add the shipping methods to. */ order_id: string /** - * The ID of the shipping option to add the shipping methods from. + * The ID of the shipping option to add as a shipping method. */ shipping_option_id: string /** - * The custom amount to add the shipping methods with. + * The custom amount to add the shipping method with. + * If not specified, the shipping option's fixed or calculated price will be used. */ custom_amount?: BigNumberInput | null } +/** + * This workflow adds shipping methods to a draft order. It's used by the + * [Add Shipping Method to Draft Order Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditshippingmethods). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around adding shipping methods to + * a draft order. + * + * @example + * const { result } = await addDraftOrderShippingMethodsWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * shipping_option_id: "so_123", + * custom_amount: 10 + * } + * }) + * + * @summary + * + * Add shipping methods to a draft order. + */ export const addDraftOrderShippingMethodsWorkflow = createWorkflow( addDraftOrderShippingMethodsWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/begin-draft-order-edit.ts b/packages/core/core-flows/src/draft-order/workflows/begin-draft-order-edit.ts index efc643e60e..2734a1e228 100644 --- a/packages/core/core-flows/src/draft-order/workflows/begin-draft-order-edit.ts +++ b/packages/core/core-flows/src/draft-order/workflows/begin-draft-order-edit.ts @@ -11,6 +11,27 @@ import { validateDraftOrderStep } from "../steps" export const beginDraftOrderEditWorkflowId = "begin-draft-order-edit" +/** + * This workflow begins a draft order edit. It's used by the + * [Create Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersidedit). + * + * The draft order edit can later be requested using {@link requestDraftOrderEditWorkflow} or confirmed using {@link confirmDraftOrderEditWorkflow}. + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * creating a draft order edit request. + * + * @example + * const { result } = await beginDraftOrderEditWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * } + * }) + * + * @summary + * + * Create a draft order edit request. + */ export const beginDraftOrderEditWorkflow = createWorkflow( beginDraftOrderEditWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/cancel-draft-order-edit.ts b/packages/core/core-flows/src/draft-order/workflows/cancel-draft-order-edit.ts index 95468a19ce..0784721ae9 100644 --- a/packages/core/core-flows/src/draft-order/workflows/cancel-draft-order-edit.ts +++ b/packages/core/core-flows/src/draft-order/workflows/cancel-draft-order-edit.ts @@ -20,10 +20,35 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const cancelDraftOrderEditWorkflowId = "cancel-draft-order-edit" +/** + * The details of the draft order edit to cancel. + */ export interface CancelDraftOrderEditWorkflowInput { + /** + * The ID of the draft order to cancel the edit for. + */ order_id: string } +/** + * This workflow cancels a draft order edit. It's used by the + * [Cancel Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_deletedraftordersidedit). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * cancelling a draft order edit. + * + * @example + * const { result } = await cancelDraftOrderEditWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * } + * }) + * + * @summary + * + * Cancel a draft order edit. + */ export const cancelDraftOrderEditWorkflow = createWorkflow( cancelDraftOrderEditWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/confirm-draft-order-edit.ts b/packages/core/core-flows/src/draft-order/workflows/confirm-draft-order-edit.ts index e1f5d9a62e..0a99e48153 100644 --- a/packages/core/core-flows/src/draft-order/workflows/confirm-draft-order-edit.ts +++ b/packages/core/core-flows/src/draft-order/workflows/confirm-draft-order-edit.ts @@ -33,6 +33,26 @@ export interface ConfirmDraftOrderEditWorkflowInput { confirmed_by: string } +/** + * This workflow confirms a draft order edit. It's used by the + * [Confirm Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditconfirm). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * confirming a draft order edit. + * + * @example + * const { result } = await confirmDraftOrderEditWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * confirmed_by: "user_123", + * } + * }) + * + * @summary + * + * Confirm a draft order edit. + */ export const confirmDraftOrderEditWorkflow = createWorkflow( confirmDraftOrderEditWorkflowId, function (input: ConfirmDraftOrderEditWorkflowInput) { diff --git a/packages/core/core-flows/src/draft-order/workflows/convert-draft-order.ts b/packages/core/core-flows/src/draft-order/workflows/convert-draft-order.ts index a2285e089b..b427132081 100644 --- a/packages/core/core-flows/src/draft-order/workflows/convert-draft-order.ts +++ b/packages/core/core-flows/src/draft-order/workflows/convert-draft-order.ts @@ -16,23 +16,30 @@ import { validateDraftOrderStep } from "../steps/validate-draft-order" const convertDraftOrderWorkflowId = "convert-draft-order" -interface ConvertDraftOrderWorkflowInput { +/** + * The details of the draft order to convert to an order. + */ +export interface ConvertDraftOrderWorkflowInput { + /** + * The ID of the draft order to convert to an order. + */ id: string } -interface ConvertDraftOrderStepInput { +/** + * The details of the draft order to convert to an order. + */ +export interface ConvertDraftOrderStepInput { + /** + * The ID of the draft order to convert to an order. + */ id: string } /** * This step converts a draft order to a pending order. - * - * @example - * ```typescript - * const order = await convertDraftOrderStep({ id: "order_123" }) - * ``` */ -const convertDraftOrderStep = createStep( +export const convertDraftOrderStep = createStep( "convert-draft-order", async function ({ id }: ConvertDraftOrderStepInput, { container }) { const service = container.resolve(Modules.ORDER) @@ -69,12 +76,23 @@ const convertDraftOrderStep = createStep( ) /** - * This workflow converts a draft order to a pending order. - * + * This workflow converts a draft order to a pending order. It's used by the + * [Convert Draft Order to Order Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersidconverttoorder). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * converting a draft order to a pending order. + * * @example - * ```typescript - * const order = await convertDraftOrderWorkflow({ id: "order_123" }) - * ``` + * const { result } = await convertDraftOrderWorkflow(container) + * .run({ + * input: { + * id: "order_123", + * } + * }) + * + * @summary + * + * Convert a draft order to a pending order. */ export const convertDraftOrderWorkflow = createWorkflow( convertDraftOrderWorkflowId, diff --git a/packages/core/core-flows/src/draft-order/workflows/refresh-draft-order-adjustments.ts b/packages/core/core-flows/src/draft-order/workflows/refresh-draft-order-adjustments.ts index a0bd3fb832..65320f6b25 100644 --- a/packages/core/core-flows/src/draft-order/workflows/refresh-draft-order-adjustments.ts +++ b/packages/core/core-flows/src/draft-order/workflows/refresh-draft-order-adjustments.ts @@ -20,12 +20,52 @@ import { updateDraftOrderPromotionsStep } from "../steps/update-draft-order-prom export const refreshDraftOrderAdjustmentsWorkflowId = "refresh-draft-order-adjustments" -interface RefreshDraftOrderAdjustmentsWorkflowInput { +/** + * The details of the draft order to refresh the adjustments for. + */ +export interface RefreshDraftOrderAdjustmentsWorkflowInput { + /** + * The draft order to refresh the adjustments for. + */ order: OrderDTO + /** + * The promo codes to add or remove from the draft order. + */ promo_codes: string[] + /** + * The action to apply with the promo codes. You can + * either: + * + * - Add the promo codes to the draft order. + * - Remove the promo codes from the draft order. + * - Replace the existing promo codes with the new ones. + */ action: PromotionActions } +/** + * This workflow refreshes the adjustments or promotions for a draft order. It's used by other workflows + * like {@link addDraftOrderItemsWorkflow} to refresh the promotions whenever changes + * are made to the draft order. + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * refreshing the adjustments or promotions for a draft order. + * + * @example + * const { result } = await refreshDraftOrderAdjustmentsWorkflow(container) + * .run({ + * input: { + * order: order, + * promo_codes: ["PROMO_CODE_1", "PROMO_CODE_2"], + * // imported from "@medusajs/framework/utils" + * action: PromotionActions.ADD, + * } + * }) + * + * @summary + * + * Refresh the promotions in a draft order. + */ export const refreshDraftOrderAdjustmentsWorkflow = createWorkflow( refreshDraftOrderAdjustmentsWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-item.ts b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-item.ts index b2e722038b..c3d1a8c3f8 100644 --- a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-item.ts +++ b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-item.ts @@ -25,6 +25,26 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const removeDraftOrderActionItemWorkflowId = "remove-draft-order-action-item" +/** + * This workflow removes an item that was added or updated in a draft order edit. It's used by the + * [Remove Item from Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_deletedraftordersidedititemsaction_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * removing an item from a draft order edit. + * + * @example + * const { result } = await removeDraftOrderActionItemWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * action_id: "action_123", + * } + * }) + * + * @summary + * + * Remove an item from a draft order edit. + */ export const removeDraftOrderActionItemWorkflow = createWorkflow( removeDraftOrderActionItemWorkflowId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-shipping-method.ts b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-shipping-method.ts index 945c46e835..cf58e9f793 100644 --- a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-shipping-method.ts +++ b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-action-shipping-method.ts @@ -29,6 +29,26 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const removeDraftOrderActionShippingMethodWorkflowId = "remove-draft-order-action-shipping-method" +/** + * This workflow removes a shipping method that was added to an edited draft order. It's used by the + * [Remove Shipping Method from Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_deletedraftordersideditshippingmethodsaction_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * removing a shipping method from an edited draft order. + * + * @example + * const { result } = await removeDraftOrderActionShippingMethodWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * action_id: "action_123", + * } + * }) + * + * @summary + * + * Remove a shipping method from an edited draft order. + */ export const removeDraftOrderActionShippingMethodWorkflow = createWorkflow( removeDraftOrderActionShippingMethodWorkflowId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-promotions.ts b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-promotions.ts index a2602e50c6..dcef23280f 100644 --- a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-promotions.ts +++ b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-promotions.ts @@ -23,11 +23,40 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const removeDraftOrderPromotionsWorkflowId = "remove-draft-order-promotions" -interface RemoveDraftOrderPromotionsWorkflowInput { +/** + * The details of the promotions to remove from a draft order. + */ +export interface RemoveDraftOrderPromotionsWorkflowInput { + /** + * The ID of the draft order to remove the promotions from. + */ order_id: string + /** + * The codes of the promotions to remove from the draft order. + */ promo_codes: string[] } +/** + * This workflow removes promotions from a draft order edit. It's used by the + * [Remove Promotions from Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_deletedraftordersideditpromotions). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * removing promotions from a draft order edit. + * + * @example + * const { result } = await removeDraftOrderPromotionsWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * promo_codes: ["PROMO_CODE_1", "PROMO_CODE_2"], + * } + * }) + * + * @summary + * + * Remove promotions from a draft order edit. + */ export const removeDraftOrderPromotionsWorkflow = createWorkflow( removeDraftOrderPromotionsWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-shipping-method.ts b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-shipping-method.ts index ea88396651..b91d6c1fce 100644 --- a/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-shipping-method.ts +++ b/packages/core/core-flows/src/draft-order/workflows/remove-draft-order-shipping-method.ts @@ -24,9 +24,12 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const removeDraftOrderShippingMethodWorkflowId = "remove-draft-order-shipping-method" -interface RemoveDraftOrderShippingMethodWorkflowInput { +/** + * The details of the shipping method to remove from a draft order. + */ +export interface RemoveDraftOrderShippingMethodWorkflowInput { /** - * The ID of the draft order to add the shipping methods to. + * The ID of the draft order to remove the shipping method from. */ order_id: string /** @@ -35,6 +38,26 @@ interface RemoveDraftOrderShippingMethodWorkflowInput { shipping_method_id: string } +/** + * This workflow removes an existing shipping method from a draft order edit. It's used by the + * [Remove Shipping Method from Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_deletedraftordersideditshippingmethodsmethodmethod_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * removing a shipping method from a draft order edit. + * + * @example + * const { result } = await removeDraftOrderShippingMethodWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * shipping_method_id: "sm_123", + * } + * }) + * + * @summary + * + * Remove an existing shipping method from a draft order edit. + */ export const removeDraftOrderShippingMethodWorkflow = createWorkflow( removeDraftOrderShippingMethodWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/request-draft-order-edit.ts b/packages/core/core-flows/src/draft-order/workflows/request-draft-order-edit.ts index ad304ce4fd..3a400b5184 100644 --- a/packages/core/core-flows/src/draft-order/workflows/request-draft-order-edit.ts +++ b/packages/core/core-flows/src/draft-order/workflows/request-draft-order-edit.ts @@ -48,6 +48,26 @@ export type RequestDraftOrderEditWorkflowInput = { requested_by?: string } +/** + * This workflow requests a draft order edit. It's used by the + * [Request Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditrequest). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * requesting a draft order edit. + * + * @example + * const { result } = await requestDraftOrderEditWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * requested_by: "user_123", + * } + * }) + * + * @summary + * + * Request a draft order edit. + */ export const requestDraftOrderEditWorkflow = createWorkflow( requestDraftOrderEditId, function (input: RequestDraftOrderEditWorkflowInput) { diff --git a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-item.ts b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-item.ts index ba6bc77a8d..7682164e29 100644 --- a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-item.ts +++ b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-item.ts @@ -25,6 +25,29 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const updateDraftOrderActionItemId = "update-draft-order-action-item" +/** + * This workflow updates a new item that was added to a draft order edit. It's used by the + * [Update New Item in Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersidedititemsaction_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * updating a new item in a draft order edit. + * + * @example + * const { result } = await updateDraftOrderActionItemWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * action_id: "action_123", + * data: { + * quantity: 2, + * } + * } + * }) + * + * @summary + * + * Update a new item in a draft order edit. + */ export const updateDraftOrderActionItemWorkflow = createWorkflow( updateDraftOrderActionItemId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-shipping-method.ts b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-shipping-method.ts index bb9fe8a083..1a07db9cdb 100644 --- a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-shipping-method.ts +++ b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-action-shipping-method.ts @@ -30,6 +30,29 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const updateDraftOrderActionShippingMethodWorkflowId = "update-draft-order-action-shipping-method" +/** + * This workflow updates a new shipping method that was added to a draft order edit. It's used by the + * [Update New Shipping Method in Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditshippingmethodsaction_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * updating a new shipping method in a draft order edit. + * + * @example + * const { result } = await updateDraftOrderActionShippingMethodWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * action_id: "action_123", + * data: { + * custom_amount: 10, + * } + * } + * }) + * + * @summary + * + * Update a new shipping method in a draft order edit. + */ export const updateDraftOrderActionShippingMethodWorkflow = createWorkflow( updateDraftOrderActionShippingMethodWorkflowId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-item.ts b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-item.ts index ad826ea8d3..ec30ce6ac4 100644 --- a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-item.ts +++ b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-item.ts @@ -30,6 +30,26 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const updateDraftOrderItemWorkflowId = "update-draft-order-item" +/** + * This workflow updates an item in a draft order edit. It's used by the + * [Update Item in Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersidedititemsitemitem_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * updating an item in a draft order edit. + * + * @example + * const { result } = await updateDraftOrderItemWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * items: [{ id: "orli_123", quantity: 2 }], + * } + * }) + * + * @summary + * + * Update an item in a draft order edit. + */ export const updateDraftOrderItemWorkflow = createWorkflow( updateDraftOrderItemWorkflowId, function ( diff --git a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-shipping-method.ts b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-shipping-method.ts index 253515d423..00acae3be0 100644 --- a/packages/core/core-flows/src/draft-order/workflows/update-draft-order-shipping-method.ts +++ b/packages/core/core-flows/src/draft-order/workflows/update-draft-order-shipping-method.ts @@ -25,6 +25,9 @@ import { refreshDraftOrderAdjustmentsWorkflow } from "./refresh-draft-order-adju export const updateDraftOrderShippingMethodWorkflowId = "update-draft-order-shipping-method" +/** + * The details of the shipping method to update in the order edit. + */ export interface UpdateDraftOrderShippingMethodWorkflowInput { /** * The ID of the order to update the shipping method in its edit. @@ -36,7 +39,7 @@ export interface UpdateDraftOrderShippingMethodWorkflowInput { */ shipping_method_id: string /** - * The ID of the shipping option to associate with the shipping method. + * The ID of the shipping method's option. */ shipping_option_id?: string /** @@ -50,6 +53,29 @@ export interface UpdateDraftOrderShippingMethodWorkflowInput { } } +/** + * This workflow updates an existing shipping method in a draft order edit. It's used by the + * [Update Shipping Method in Draft Order Edit Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersideditshippingmethodsmethodmethod_id). + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * updating an existing shipping method in a draft order edit. + * + * @example + * const { result } = await updateDraftOrderShippingMethodWorkflow(container) + * .run({ + * input: { + * order_id: "order_123", + * data: { + * shipping_method_id: "sm_123", + * custom_amount: 10, + * } + * } + * }) + * + * @summary + * + * Update an existing shipping method in a draft order edit. + */ export const updateDraftOrderShippingMethodWorkflow = createWorkflow( updateDraftOrderShippingMethodWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/core-flows/src/draft-order/workflows/update-draft-order.ts b/packages/core/core-flows/src/draft-order/workflows/update-draft-order.ts index df87add151..6e0bc8d908 100644 --- a/packages/core/core-flows/src/draft-order/workflows/update-draft-order.ts +++ b/packages/core/core-flows/src/draft-order/workflows/update-draft-order.ts @@ -20,6 +20,9 @@ import { validateDraftOrderStep } from "../steps/validate-draft-order" export const updateDraftOrderWorkflowId = "update-draft-order" +/** + * The details of the draft order to update. + */ export interface UpdateDraftOrderWorkflowInput { /** * The ID of the draft order to update. @@ -55,12 +58,42 @@ export interface UpdateDraftOrderWorkflowInput { metadata?: Record | null } -interface UpdateDraftOrderStepInput { +/** + * The input for the update draft order step. + */ +export interface UpdateDraftOrderStepInput { + /** + * The draft order to update. + */ order: OrderDTO + /** + * The details to update in the draft order. + */ input: UpdateOrderDTO } -const updateDraftOrderStep = createStep( +/** + * This step updates a draft order's details. + * + * :::note + * + * You can retrieve a draft order's details using [Query](https://docs.medusajs.com/learn/fundamentals/module-links/query), + * or [useQueryGraphStep](https://docs.medusajs.com/resources/references/medusa-workflows/steps/useQueryGraphStep). + * + * ::: + * + * @example + * const data = updateDraftOrderStep({ + * order: { + * id: "order_123", + * // other order details... + * }, + * input: { + * // details to update... + * } + * }) + */ +export const updateDraftOrderStep = createStep( "update-draft-order", async ({ order, input }: UpdateDraftOrderStepInput, { container }) => { const service = container.resolve(Modules.ORDER) @@ -87,6 +120,32 @@ const updateDraftOrderStep = createStep( } ) +/** + * This workflow updates a draft order's details. It's used by the + * [Update Draft Order Admin API Route](https://docs.medusajs.com/api/admin#draft-orders_postdraftordersid). + * + * This workflow doesn't update the draft order's items, shipping methods, or promotions. Instead, you have to + * create a draft order edit using {@link beginDraftOrderEditWorkflow} and make updates in the draft order edit. + * Then, you can confirm the draft order edit using {@link confirmDraftOrderEditWorkflow} or request a draft order edit + * using {@link requestDraftOrderEditWorkflow}. + * + * You can use this workflow within your customizations or your own custom workflows, allowing you to wrap custom logic around + * updating a draft order. + * + * @example + * const { result } = await updateDraftOrderWorkflow(container) + * .run({ + * input: { + * id: "order_123", + * user_id: "user_123", + * customer_id: "cus_123", + * } + * }) + * + * @summary + * + * Update a draft order's details. + */ export const updateDraftOrderWorkflow = createWorkflow( updateDraftOrderWorkflowId, function (input: WorkflowData) { diff --git a/packages/core/types/src/workflow/order/begin-order-edit.ts b/packages/core/types/src/workflow/order/begin-order-edit.ts index 11cfa8c17f..f2566b3f46 100644 --- a/packages/core/types/src/workflow/order/begin-order-edit.ts +++ b/packages/core/types/src/workflow/order/begin-order-edit.ts @@ -8,6 +8,9 @@ export interface BeginorderEditWorkflowInput { order_id: string /** * The ID of the user requesting the order edit. + * + * @example + * "user_123" */ created_by?: string /**