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

Memberships /memberships

MethodPathAuthDescription
GET/memberships/member/:memberIdYesGet active subscription for a member
GET/memberships/statsYesGet membership statistics
GET/memberships/subscriptionsYesGet all subscriptions
GET/memberships/subscriptions/:idYesGet a subscription by ID
GET/memberships/tiersGet all membership tiers
GET/memberships/tiers/:idGet a membership tier by ID
POST/memberships/subscriptionsYesCreate a new subscription
POST/memberships/subscriptions/:id/cancelYesCancel a subscription
POST/memberships/tiersYesCreate a new membership tier
PUT/memberships/subscriptions/:idYesUpdate a subscription
PUT/memberships/tiers/:idYesUpdate a membership tier
DELETE/memberships/tiers/:idYesDelete a membership tier

Internals

Use-cases

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

Use-caseSignature
CancelSubscriptionUseCaseexecute(tenantId: string, subscriptionId: string, reason?: string)
CreateMembershipTierUseCaseexecute(tenantId: string, dto: CreateMembershipTierDto)
CreateSubscriptionUseCaseexecute(tenantId: string, dto: CreateSubscriptionDto)
DeleteMembershipTierUseCaseexecute(tenantId: string, tierId: string)
GetMembershipStatsUseCaseexecute(tenantId: string)
GetMembershipTierUseCaseexecute(tenantId: string, tierId: string)
GetMemberSubscriptionUseCaseexecute(tenantId: string, memberId: string)
GetSubscriptionUseCaseexecute(tenantId: string, subscriptionId: string)
ListMembershipTiersUseCaseexecute(tenantId: string, includeInactive?: boolean)
ListSubscriptionsUseCaseexecute(tenantId: string, query: ListSubscriptionsQuery)
UpdateMembershipTierUseCaseexecute(tenantId: string, tierId: string, dto: UpdateMembershipTierDto)
UpdateSubscriptionUseCaseexecute(tenantId: string, subscriptionId: string, dto: UpdateSubscriptionDto)

Entities

Sequelize models owned by this module.

MembershipTier — table membership_tiers

FieldType
idstring
tenantIdstring
tenantTenant
namestring
slugstring
descriptionstring | null
iconstring | null
colorstring | null
monthlyPricenumber
yearlyPricenumber | null
currencystring
benefitsMembershipBenefit[]
discountPercentagenumber | null
freeServicesPerMonthnumber | null
priorityBookingboolean
vipAccessboolean
customBenefitsRecord<string, unknown> | null
linkedPlanIdstring | null
linkedPlanMerchantPlan
statusMembershipTierStatus
sortOrdernumber
featuredboolean
createdAtDate
updatedAtDate
idstring
tenantIdstring
memberIdstring
tierIdstring
tierMembershipTier
billingIntervalBillingInterval
pricenumber
currencystring
statusSubscriptionStatus
startDateDate
endDateDate | null
nextBillingDateDate | null
cancelledAtDate | null
cancellationReasonstring | null
paymentProviderstring | null
externalSubscriptionIdstring | null
freeServicesUsednumber
usageResetDateDate | null
createdAtDate
updatedAtDate

Repositories

Data-access classes wrapping the entities.

MembershipRepository

createTier · findTierById · findTierBySlug · findAllTiers · updateTier · deleteTier · createSubscription · findSubscriptionById · findSubscriptionsByMember · findActiveSubscription · findAllSubscriptions · updateSubscription · cancelSubscription · renewSubscription · countActiveSubscriptionsForTier · findSubscriptionByExternalId · findTierByLinkedPlanId · getStats · getSubscriberCountByTier

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.