@withpotter/shipping — 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

Shipping /shipping

MethodPathAuthDescription
GET/shipping/zonesYesHandle list zones
GET/shipping/zones/:idYesHandle get zone
POST/shipping/calculateCalculate
POST/shipping/zonesYesHandle create zone
POST/shipping/zones/:zoneId/ratesYesHandle create rate
PATCH/shipping/zones/:idYesHandle update zone
PATCH/shipping/zones/:zoneId/rates/:rateIdYesHandle update rate
DELETE/shipping/zones/:idYesHandle delete zone
DELETE/shipping/zones/:zoneId/rates/:rateIdYesHandle delete rate

Internals

Use-cases

Application operations. Each is a single-purpose class with one execute() method.

Use-caseSignature
CalculateShippingUseCaseexecute(tenantId: string, dto: CalculateShippingDto): Promise<CalculatedShippingOptionDto[]>
CreateShippingRateUseCaseexecute(tenantId: string, zoneId: string, dto: CreateShippingRateDto): Promise<ShippingRateResponseDto>
CreateShippingZoneUseCaseexecute(tenantId: string, dto: CreateShippingZoneDto): Promise<ShippingZoneResponseDto>
DeleteShippingRateUseCaseexecute(tenantId: string, zoneId: string, rateId: string): Promise<void>
DeleteShippingZoneUseCaseexecute(tenantId: string, zoneId: string): Promise<void>
GetShippingZoneUseCaseexecute(tenantId: string, zoneId: string): Promise<ShippingZoneResponseDto>
ListShippingZonesUseCaseexecute(tenantId: string): Promise<ShippingZoneResponseDto[]>
ResolveShippingRateUseCaseexecute(tenantId: string, rateId: string, subtotal: number): Promise<{ price: number; rateName: string; zoneName: string } | null>
UpdateShippingRateUseCaseexecute(tenantId: string, zoneId: string, rateId: string, dto: UpdateShippingRateDto): Promise<ShippingRateResponseDto>
UpdateShippingZoneUseCaseexecute(tenantId: string, zoneId: string, dto: UpdateShippingZoneDto): Promise<ShippingZoneResponseDto>

Entities

Sequelize models owned by this module.

ShippingRate — table shipping_rates

FieldType
idstring
shippingZoneIdstring
zoneShippingZone
namestring
descriptionstring | null
rateTypeShippingRateType
pricenumber
estimatedDaysstring | null
conditionsRateConditions | null
sortOrdernumber
isActiveboolean
createdAtDate
updatedAtDate

ShippingZone — table shipping_zones

FieldType
idstring
tenantIdstring
tenantTenant
namestring
descriptionstring | null
regionsZoneRegion
statusShippingZoneStatus
sortOrdernumber
freeShippingThresholdnumber | null
ratesShippingRate[]
createdAtDate
updatedAtDate

ShippingZone — table shipping_zones

FieldType
idstring
tenantIdstring
tenantTenant
namestring
descriptionstring | null
regionsZoneRegion
statusShippingZoneStatus
sortOrdernumber
freeShippingThresholdnumber | null
ratesShippingRate[]
createdAtDate
updatedAtDate
idstring
shippingZoneIdstring
zoneShippingZone
namestring
descriptionstring | null
rateTypeShippingRateType
pricenumber
estimatedDaysstring | null
conditionsRateConditions | null
sortOrdernumber
isActiveboolean
createdAtDate
updatedAtDate

Repositories

Data-access classes wrapping the entities.

ShippingRepository

findZonesByTenant · findActiveZonesByTenant · findZoneById · createZone · updateZone · deleteZone · findRateById · createRate · updateRate · deleteRate · findMatchingZones

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.