diff --git a/packages/core/types/src/http/promotion/admin/entities.ts b/packages/core/types/src/http/promotion/admin/entities.ts new file mode 100644 index 0000000000..046f6bb278 --- /dev/null +++ b/packages/core/types/src/http/promotion/admin/entities.ts @@ -0,0 +1,13 @@ +import { + BasePromotion, + BasePromotionRule, + BaseRuleAttributeOptions, + BaseRuleOperatorOptions, + BaseRuleValueOptions +} from "../common"; + +export interface AdminPromotion extends BasePromotion {} +export interface AdminPromotionRule extends BasePromotionRule {} +export interface AdminRuleAttributeOption extends BaseRuleAttributeOptions {} +export interface AdminRuleOperatorOption extends BaseRuleOperatorOptions {} +export interface AdminRuleValueOption extends BaseRuleValueOptions {} \ No newline at end of file diff --git a/packages/core/types/src/http/promotion/admin/index.ts b/packages/core/types/src/http/promotion/admin/index.ts index d24d2962f9..57fa23181b 100644 --- a/packages/core/types/src/http/promotion/admin/index.ts +++ b/packages/core/types/src/http/promotion/admin/index.ts @@ -1,4 +1,2 @@ -export * from "./promotion-rule" -export * from "./rule-attribute-options" -export * from "./rule-operator-options" -export * from "./rule-value-options" +export * from "./entities" +export * from "./responses" \ No newline at end of file diff --git a/packages/core/types/src/http/promotion/admin/promotion-rule.ts b/packages/core/types/src/http/promotion/admin/promotion-rule.ts deleted file mode 100644 index 2bfcb2ec9d..0000000000 --- a/packages/core/types/src/http/promotion/admin/promotion-rule.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface PromotionRuleResponse { - id: string - attribute: string - attribute_label: string - field_type: string - operator: string - operator_label: string - values: { value: string }[] - disguised: boolean - required: boolean -} - -export interface AdminPromotionRuleListResponse { - rules: PromotionRuleResponse[] -} diff --git a/packages/core/types/src/http/promotion/admin/responses.ts b/packages/core/types/src/http/promotion/admin/responses.ts new file mode 100644 index 0000000000..d481e71117 --- /dev/null +++ b/packages/core/types/src/http/promotion/admin/responses.ts @@ -0,0 +1,57 @@ +import { BatchMethodResponse } from "../../../common"; +import { PaginatedResponse } from "../../common"; +import { + AdminPromotion, + AdminPromotionRule, + AdminRuleAttributeOption, + AdminRuleOperatorOption, + AdminRuleValueOption +} from "./entities"; + +export interface AdminPromotionResponse { + promotion: AdminPromotion +} + +export type AdminPromotionListResponse = PaginatedResponse<{ + promotions: AdminPromotion[] +}> + +export interface PromotionRuleResponse { + rule: AdminPromotionRule +} + +export type AdminPromotionRuleListResponse = { + rules: AdminPromotionRule[] +} + +export interface RuleAttributeOptionsResponse { + attribute: AdminRuleAttributeOption[] +} + +export type AdminRuleAttributeOptionsListResponse = { + attributes: AdminRuleAttributeOption[] +} + +export interface RuleOperatorOptionsResponse { + operator: AdminRuleOperatorOption +} + +export type AdminRuleOperatorOptionsListResponse = PaginatedResponse<{ + operators: AdminRuleOperatorOption[] +}> + +/** + * @experimental + */ +export interface RuleValueOptionsResponse { + value: AdminRuleValueOption +} + +/** + * @experimental + */ +export type AdminRuleValueOptionsListResponse = { + values: AdminRuleValueOption[] +} + +export type AdminPromotionRuleBatchResponse = BatchMethodResponse \ No newline at end of file diff --git a/packages/core/types/src/http/promotion/admin/rule-attribute-options.ts b/packages/core/types/src/http/promotion/admin/rule-attribute-options.ts deleted file mode 100644 index 9b52c2a6e4..0000000000 --- a/packages/core/types/src/http/promotion/admin/rule-attribute-options.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface RuleAttributeOptionsResponse { - id: string - value: string - label: string - field_type: string - required: boolean - disguised: boolean - operators: { - id: string - value: string - label: string - }[] -} - -export interface AdminRuleAttributeOptionsListResponse { - attributes: RuleAttributeOptionsResponse[] -} diff --git a/packages/core/types/src/http/promotion/admin/rule-operator-options.ts b/packages/core/types/src/http/promotion/admin/rule-operator-options.ts deleted file mode 100644 index a347869097..0000000000 --- a/packages/core/types/src/http/promotion/admin/rule-operator-options.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface RuleOperatorOptionsResponse { - id: string - value: string - label: string -} - -export interface AdminRuleOperatorOptionsListResponse { - operators: RuleOperatorOptionsResponse[] -} diff --git a/packages/core/types/src/http/promotion/admin/rule-value-options.ts b/packages/core/types/src/http/promotion/admin/rule-value-options.ts deleted file mode 100644 index 074903b592..0000000000 --- a/packages/core/types/src/http/promotion/admin/rule-value-options.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @experimental - */ -export interface RuleValueOptionsResponse { - id: string - value: string - label: string -} - -/** - * @experimental - */ -export interface AdminRuleValueOptionsListResponse { - values: RuleValueOptionsResponse[] -} diff --git a/packages/core/types/src/http/promotion/common.ts b/packages/core/types/src/http/promotion/common.ts index 85d98909fc..fe54f29984 100644 --- a/packages/core/types/src/http/promotion/common.ts +++ b/packages/core/types/src/http/promotion/common.ts @@ -1,12 +1,69 @@ -import { ApplicationMethodTypeValues } from "../../promotion" +import { + ApplicationMethodAllocationValues, + ApplicationMethodTargetTypeValues, + ApplicationMethodTypeValues, + PromotionRuleOperatorValues, + PromotionTypeValues +} from "../../promotion" +import { CampaignResponse } from "../campaign" + +export interface BasePromotionRule { + id: string + description?: string | null + attribute?: string + operator?: PromotionRuleOperatorValues + values: BasePromotionRuleValue[] +} + +export interface BaseApplicationMethod { + id: string + type?: ApplicationMethodTypeValues + target_type?: ApplicationMethodTargetTypeValues + allocation?: ApplicationMethodAllocationValues + value?: number + currency_code?: string + max_quantity?: number | null + buy_rules_min_quantity?: number | null + apply_to_quantity?: number | null + promotion?: BasePromotion + target_rules?: BasePromotionRule[] + buy_rules?: BasePromotionRule[] +} export interface BasePromotion { id: string code?: string + type?: PromotionTypeValues is_automatic?: boolean - application_method?: { - type?: ApplicationMethodTypeValues - value?: number - currency_code?: string - } + application_method?: BaseApplicationMethod + rules?: BasePromotionRule[] + campaign_id?: string + campaign?: CampaignResponse } + +export interface BasePromotionRuleValue { + id: string + value?: string +} + +export interface BaseRuleAttributeOptions { + id: string + value: string + label: string + field_type: string + required: boolean + disguised: boolean + operators: BaseRuleOperatorOptions[] +} + +export interface BaseRuleOperatorOptions { + id: string + value: string + label: string +} + +export interface BaseRuleValueOptions { + id: string + value: string + label: string +} \ No newline at end of file diff --git a/packages/medusa/src/api/admin/promotions/[id]/[rule_type]/route.ts b/packages/medusa/src/api/admin/promotions/[id]/[rule_type]/route.ts index e2ee06587d..dc19c54722 100644 --- a/packages/medusa/src/api/admin/promotions/[id]/[rule_type]/route.ts +++ b/packages/medusa/src/api/admin/promotions/[id]/[rule_type]/route.ts @@ -1,4 +1,4 @@ -import { AdminGetPromotionRulesRes } from "@medusajs/types" +import { HttpTypes } from "@medusajs/types" import { ContainerRegistrationKeys, remoteQueryObjectFromString, @@ -18,7 +18,7 @@ import { export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { id, rule_type: ruleType } = req.params const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) @@ -48,7 +48,7 @@ export const GET = async ( promotionRules.push(...(promotion?.application_method?.buy_rules || [])) } - const transformedRules: AdminGetPromotionRulesRes = [] + const transformedRules: HttpTypes.AdminPromotionRule[] = [] const disguisedRules = ruleAttributes.filter((attr) => !!attr.disguised) for (const disguisedRule of disguisedRules) { diff --git a/packages/medusa/src/api/admin/promotions/[id]/buy-rules/batch/route.ts b/packages/medusa/src/api/admin/promotions/[id]/buy-rules/batch/route.ts index 49396be58f..09777bf835 100644 --- a/packages/medusa/src/api/admin/promotions/[id]/buy-rules/batch/route.ts +++ b/packages/medusa/src/api/admin/promotions/[id]/buy-rules/batch/route.ts @@ -3,7 +3,7 @@ import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../../../../types/routing" -import { BatchMethodRequest } from "@medusajs/types" +import { BatchMethodRequest, HttpTypes } from "@medusajs/types" import { AdminCreatePromotionRuleType, AdminUpdatePromotionRuleType, @@ -18,7 +18,7 @@ export const POST = async ( AdminUpdatePromotionRuleType > >, - res: MedusaResponse + res: MedusaResponse ) => { const id = req.params.id const { result } = await batchPromotionRulesWorkflow(req.scope).run({ diff --git a/packages/medusa/src/api/admin/promotions/[id]/route.ts b/packages/medusa/src/api/admin/promotions/[id]/route.ts index b3c8c0593b..7e9433398e 100644 --- a/packages/medusa/src/api/admin/promotions/[id]/route.ts +++ b/packages/medusa/src/api/admin/promotions/[id]/route.ts @@ -16,11 +16,11 @@ import { AdminGetPromotionParamsType, AdminUpdatePromotionType, } from "../validators" -import { AdditionalData } from "@medusajs/types" +import { AdditionalData, DeleteResponse, HttpTypes } from "@medusajs/types" export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const idOrCode = req.params.id const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) @@ -45,7 +45,7 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { additional_data, ...rest } = req.validatedBody const updatePromotions = updatePromotionsWorkflow(req.scope) @@ -71,7 +71,7 @@ export const POST = async ( export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse> ) => { const id = req.params.id const deletePromotions = deletePromotionsWorkflow(req.scope) diff --git a/packages/medusa/src/api/admin/promotions/[id]/rules/batch/route.ts b/packages/medusa/src/api/admin/promotions/[id]/rules/batch/route.ts index d93fdc0951..9cb63edfe3 100644 --- a/packages/medusa/src/api/admin/promotions/[id]/rules/batch/route.ts +++ b/packages/medusa/src/api/admin/promotions/[id]/rules/batch/route.ts @@ -3,7 +3,7 @@ import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../../../../types/routing" -import { BatchMethodRequest } from "@medusajs/types" +import { BatchMethodRequest, HttpTypes } from "@medusajs/types" import { AdminCreatePromotionRuleType, AdminUpdatePromotionRuleType, @@ -18,7 +18,7 @@ export const POST = async ( AdminUpdatePromotionRuleType > >, - res: MedusaResponse + res: MedusaResponse ) => { const id = req.params.id const { result } = await batchPromotionRulesWorkflow(req.scope).run({ diff --git a/packages/medusa/src/api/admin/promotions/[id]/target-rules/batch/route.ts b/packages/medusa/src/api/admin/promotions/[id]/target-rules/batch/route.ts index e5f84e6035..771c1ef1d5 100644 --- a/packages/medusa/src/api/admin/promotions/[id]/target-rules/batch/route.ts +++ b/packages/medusa/src/api/admin/promotions/[id]/target-rules/batch/route.ts @@ -3,7 +3,7 @@ import { AuthenticatedMedusaRequest, MedusaResponse, } from "../../../../../../types/routing" -import { BatchMethodRequest } from "@medusajs/types" +import { BatchMethodRequest, HttpTypes } from "@medusajs/types" import { AdminCreatePromotionRuleType, AdminUpdatePromotionRuleType, @@ -18,7 +18,7 @@ export const POST = async ( AdminUpdatePromotionRuleType > >, - res: MedusaResponse + res: MedusaResponse ) => { const id = req.params.id const { result } = await batchPromotionRulesWorkflow(req.scope).run({ diff --git a/packages/medusa/src/api/admin/promotions/route.ts b/packages/medusa/src/api/admin/promotions/route.ts index 6a0e54f7ab..87726b11a1 100644 --- a/packages/medusa/src/api/admin/promotions/route.ts +++ b/packages/medusa/src/api/admin/promotions/route.ts @@ -12,11 +12,11 @@ import { AdminCreatePromotionType, AdminGetPromotionsParamsType, } from "./validators" -import { AdditionalData } from "@medusajs/types" +import { AdditionalData, HttpTypes } from "@medusajs/types" export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const remoteQuery = req.scope.resolve(ContainerRegistrationKeys.REMOTE_QUERY) @@ -41,7 +41,7 @@ export const GET = async ( export const POST = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { additional_data, ...rest } = req.validatedBody const createPromotions = createPromotionsWorkflow(req.scope) diff --git a/packages/medusa/src/api/admin/promotions/rule-attribute-options/[rule_type]/route.ts b/packages/medusa/src/api/admin/promotions/rule-attribute-options/[rule_type]/route.ts index 022bad0cf0..91c709a90a 100644 --- a/packages/medusa/src/api/admin/promotions/rule-attribute-options/[rule_type]/route.ts +++ b/packages/medusa/src/api/admin/promotions/rule-attribute-options/[rule_type]/route.ts @@ -1,3 +1,4 @@ +import { HttpTypes } from "@medusajs/types" import { AuthenticatedMedusaRequest, MedusaResponse, @@ -7,7 +8,7 @@ import { AdminGetPromotionRuleParamsType } from "../../validators" export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { rule_type: ruleType } = req.params diff --git a/packages/medusa/src/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route.ts b/packages/medusa/src/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route.ts index 48e5b5cbae..1c14de85e2 100644 --- a/packages/medusa/src/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route.ts +++ b/packages/medusa/src/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route.ts @@ -12,6 +12,7 @@ import { validateRuleType, } from "../../../utils" import { AdminGetPromotionRuleParamsType } from "../../../validators" +import { HttpTypes } from "@medusajs/types" /* This endpoint returns all the potential values for rules (promotion rules, target rules and buy rules) @@ -22,7 +23,7 @@ import { AdminGetPromotionRuleParamsType } from "../../../validators" */ export const GET = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse ) => { const { rule_type: ruleType, diff --git a/packages/medusa/src/api/admin/refund-reasons/[id]/route.ts b/packages/medusa/src/api/admin/refund-reasons/[id]/route.ts index ac9c75f2e7..e2c5731f4b 100644 --- a/packages/medusa/src/api/admin/refund-reasons/[id]/route.ts +++ b/packages/medusa/src/api/admin/refund-reasons/[id]/route.ts @@ -2,7 +2,7 @@ import { deleteReturnReasonsWorkflow, updateRefundReasonsWorkflow, } from "@medusajs/core-flows" -import { RefundReasonResponse } from "@medusajs/types" +import { DeleteResponse, RefundReasonResponse } from "@medusajs/types" import { AuthenticatedMedusaRequest, MedusaResponse, @@ -51,7 +51,7 @@ export const POST = async ( export const DELETE = async ( req: AuthenticatedMedusaRequest, - res: MedusaResponse + res: MedusaResponse> ) => { const { id } = req.params const input = { ids: [id] }