Files
medusa-store/packages/admin-next/dashboard/src/lib/client/campaigns.ts
Riqwan Thamir 6ec5ded6c8 feat(dashboard): add promotions to campaign UI (#7283)
* 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
2024-05-10 10:39:01 +02:00

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,
}