* feat(core-flows,types,medusa): API to add promotions to campaign * chore: consolidate specs * chore: split workflows step into 2 * chore: fix tests * chore: fix specs * chore: add promotions to campaign UI * chore: fix bug wrt to not refreshing * chore: address review comments
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import {
|
|
AdminCampaignListResponse,
|
|
AdminCampaignResponse,
|
|
CreateCampaignDTO,
|
|
LinkMethodRequest,
|
|
UpdateCampaignDTO,
|
|
} from "@medusajs/types"
|
|
import { CampaignDeleteRes } from "../../types/api-responses"
|
|
import { deleteRequest, getRequest, postRequest } from "./common"
|
|
|
|
async function retrieveCampaign(id: string, query?: Record<string, any>) {
|
|
return getRequest<AdminCampaignResponse>(`/admin/campaigns/${id}`, query)
|
|
}
|
|
|
|
async function listCampaigns(query?: Record<string, any>) {
|
|
return getRequest<AdminCampaignListResponse>(`/admin/campaigns`, query)
|
|
}
|
|
|
|
async function createCampaign(payload: CreateCampaignDTO) {
|
|
return postRequest<AdminCampaignResponse>(`/admin/campaigns`, payload)
|
|
}
|
|
|
|
async function updateCampaign(id: string, payload: UpdateCampaignDTO) {
|
|
return postRequest<AdminCampaignResponse>(`/admin/campaigns/${id}`, payload)
|
|
}
|
|
|
|
async function deleteCampaign(id: string) {
|
|
return deleteRequest<CampaignDeleteRes>(`/admin/campaigns/${id}`)
|
|
}
|
|
|
|
async function addOrRemoveCampaignPromotions(
|
|
id: string,
|
|
payload: LinkMethodRequest
|
|
) {
|
|
return postRequest<AdminCampaignResponse>(
|
|
`/admin/campaigns/${id}/promotions`,
|
|
payload
|
|
)
|
|
}
|
|
|
|
export const campaigns = {
|
|
retrieve: retrieveCampaign,
|
|
list: listCampaigns,
|
|
create: createCampaign,
|
|
update: updateCampaign,
|
|
delete: deleteCampaign,
|
|
addOrRemovePromotions: addOrRemoveCampaignPromotions,
|
|
}
|