Promotions (admin API)
Admin routes of the promotions module. Every route needs a staff session and the permission named on it; send X-Resolve-Locale: false to receive every locale of a translatable field for editing.
GET /v1/admin/promotions
Section titled “GET /v1/admin/promotions”List promotions
Parameters:
isActivein query (boolean, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).
Responses:
200: Promotions retrieved.401: Unauthorized.403: Insufficient permissions.
POST /v1/admin/promotions
Section titled “POST /v1/admin/promotions”Create promotion
Request body: CreatePromotionAdminDto.
Responses:
201: Promotion created.400: Invalid input.401: Unauthorized.403: Insufficient permissions.
DELETE /v1/admin/promotions/{id}
Section titled “DELETE /v1/admin/promotions/{id}”Deactivate promotion
Parameters:
idin path (string, required).
Responses:
204: Promotion deactivated.401: Unauthorized.403: Insufficient permissions.404: Promotion not found.
GET /v1/admin/promotions/{id}
Section titled “GET /v1/admin/promotions/{id}”Get promotion
Parameters:
idin path (string, required).
Responses:
200: Promotion retrieved.401: Unauthorized.403: Insufficient permissions.404: Promotion not found.
PATCH /v1/admin/promotions/{id}
Section titled “PATCH /v1/admin/promotions/{id}”Update promotion
Parameters:
idin path (string, required).
Request body: UpdatePromotionAdminDto.
Responses:
200: Promotion updated.400: Invalid input.401: Unauthorized.403: Insufficient permissions.404: Promotion not found.
Schemas
Section titled “Schemas”CreatePromotionAdminDto
Section titled “CreatePromotionAdminDto”name(TranslatableDto, required).description(TranslatableDto, optional).type(object, required).applicationMethod(object, required).couponCode(string, optional).value(number, min 0, required).minimumOrderAmount(number, min 0, optional).maximumDiscount(number, min 0, optional).usageLimit(number, min 1, optional).usageLimitPerUser(number, min 1, optional).isExclusive(boolean, optional).priority(number, min 0, optional).buyQuantity(number, min 1, optional).getQuantity(number, min 1, optional).tierConfig(object, optional).startsAt(string, optional).endsAt(string, optional).isActive(boolean, optional).eligibleProductIds(array of string, optional).eligibleCategoryIds(array of string, optional).
TranslatableDto
Section titled “TranslatableDto”default(string, required).fr(string, optional).en(string, optional).ar(string, optional).