@withpotter/discount — module reference
HTTP routes this module mounts, plus its internal use-cases, entities, and repositories. The exhaustive request/response contract is the engine’s OpenAPI document at /docs; the layered structure below follows the package internal architecture.
HTTP routes
Discounts /discounts
| Method | Path | Auth | Description |
|---|---|---|---|
GET | /discounts | Yes | List discounts with filters |
GET | /discounts/:id | Yes | Get discount by ID |
GET | /discounts/:id/analytics | Yes | Get discount analytics |
GET | /discounts/auto-apply | — | Get auto-apply discounts for storefront |
GET | /discounts/code/:code | Yes | Get discount by code |
POST | /discounts | Yes | Create a new discount |
POST | /discounts/apply/:code | — | Apply a discount code (increments usage) |
POST | /discounts/validate | — | Validate a discount code |
PUT | /discounts/:id | Yes | Update discount |
PATCH | /discounts/:id/activate | Yes | Activate discount |
PATCH | /discounts/:id/deactivate | Yes | Deactivate discount |
DELETE | /discounts/:id | Yes | Delete discount |
Internals
Use-cases
Application operations. Each is a single-purpose class with one execute() method.
| Use-case | Signature |
|---|---|
ActivateDiscountUseCase | execute(tenantId: string, id: string): Promise<DiscountResponseDto> |
ApplyDiscountUseCase | execute(tenantId: string, code: string): Promise<DiscountResponseDto> |
CreateDiscountUseCase | execute(tenantId: string, dto: CreateDiscountDto): Promise<DiscountResponseDto> |
DeactivateDiscountUseCase | execute(tenantId: string, id: string): Promise<DiscountResponseDto> |
DeleteDiscountUseCase | execute(tenantId: string, id: string): Promise<void> |
FindAutoApplyDiscountUseCase | execute(tenantId: string): Promise<DiscountResponseDto[]> |
GetDiscountAnalyticsUseCase | execute(tenantId: string, discountId: string): Promise<DiscountAnalyticsResult> |
GetDiscountByCodeUseCase | execute(tenantId: string, code: string): Promise<DiscountResponseDto> |
GetDiscountUseCase | execute(tenantId: string, id: string): Promise<DiscountResponseDto> |
ListDiscountsUseCase | execute(tenantId: string, query: DiscountQueryDto): Promise<PaginatedDiscountsResponseDto> |
UpdateDiscountUseCase | execute(tenantId: string, id: string, dto: UpdateDiscountDto): Promise<DiscountResponseDto> |
ValidateDiscountUseCase | execute(tenantId: string, dto: ValidateDiscountDto): Promise<DiscountValidationResultDto> |
Entities
Sequelize models owned by this module.
Discount — table discounts
| Field | Type |
|---|---|
id | string |
tenantId | string |
tenant | Tenant |
name | string |
description | string | null |
code | string |
discountType | DiscountType |
value | number | null |
maxDiscountAmount | number | null |
buyXGetYConfig | BuyXGetYConfig | null |
conditions | DiscountConditions |
startsAt | Date | null |
endsAt | Date | null |
usageLimit | number | null |
usageCount | number |
usageLimitPerCustomer | number | null |
status | DiscountStatus |
autoApply | boolean |
createdAt | Date |
updatedAt | Date |
Repositories
Data-access classes wrapping the entities.
DiscountRepository
findById · findByCode · findWithFilters · findActiveDiscounts · findAutoApply · isCodeUnique · create · update · delete · incrementUsage · decrementUsage · activate · deactivate · updateExpiredDiscounts · updateScheduledDiscounts
Generated from the module’s source. Routes are relative to the engine root
(default http://localhost:3001). For full request/response schemas use the live
OpenAPI document.