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

Members (Admin) /admin/members

MethodPathAuthDescription
GET/admin/membersYesList members with filters
GET/admin/members/:idYesGet member by ID
GET/admin/members/by-email/:emailYesGet member by email
GET/admin/members/exportYesExport members as CSV
GET/admin/members/topYesGet top members by total spent
POST/admin/membersYesCreate a new member (admin)
POST/admin/members/:id/addressesYesAdd address to member
PUT/admin/members/:idYesUpdate member
PATCH/admin/members/:id/addresses/:addressIdYesUpdate member address
PATCH/admin/members/bulkYesBulk update members (status, tags)
DELETE/admin/members/:idYesDelete member
DELETE/admin/members/:id/addresses/:addressIdYesRemove member address

Internals

Use-cases

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

Use-caseSignature
AddAddressUseCaseexecute(tenantId: string, memberId: string, dto: AddAddressDto): Promise<MemberResponseDto>
BulkUpdateMembersUseCaseexecute(tenantId: string, dto: BulkUpdateMembersDto): Promise<{ updated: number }>
CreateMemberUseCaseexecute(tenantId: string, dto: CreateMemberDto): Promise<MemberResponseDto>
DeleteMemberUseCaseexecute(tenantId: string, memberId: string): Promise<void>
GetMemberByEmailUseCaseexecute(tenantId: string, email: string): Promise<MemberResponseDto>
GetMemberUseCaseexecute(tenantId: string, memberId: string): Promise<MemberResponseDto>
GetTopMembersUseCaseexecute(tenantId: string, limit: number = 10): Promise<MemberResponseDto[]>
ListMembersUseCaseexecute(tenantId: string, query: MemberQueryDto): Promise<PaginatedMembersResponseDto>
RemoveAddressUseCaseexecute(tenantId: string, memberId: string, addressId: string): Promise<MemberResponseDto>
UpdateAddressUseCaseexecute(tenantId: string, memberId: string, addressId: string, dto: UpdateAddressDto): Promise<MemberResponseDto>
UpdateMemberUseCaseexecute(tenantId: string, memberId: string, dto: UpdateMemberDto): Promise<MemberResponseDto>

Entities

Sequelize models owned by this module.

Member — table members

FieldType
idstring
tenantIdstring
tenantTenant
emailstring
phonestring | null
namestring | null
typeCustomerType
sourceCustomerSource | null
statusCustomerStatus
passwordHashstring | null
emailVerifiedboolean
passwordResetTokenstring | null
passwordResetExpiresDate | null
avatar{ url: string
addressesMemberAddress[]
acceptsMarketingboolean
tagsstring[]
notesCustomerNote[]
totalOrdersnumber
totalSpentnumber
dataRecord<string, unknown>
createdAtDate
updatedAtDate
lastOrderAtDate | null
lastLoginAtDate | null
lastActivityAtDate | null
convertedAtDate | null

Repositories

Data-access classes wrapping the entities.

MemberRepository

findById · findByEmail · findWithFilters · findTopMembers · create · update · delete · setPassword · verifyPassword · setEmailVerified · updateLastLogin · setPasswordResetToken · findByPasswordResetToken · clearPasswordResetToken · addAddress · updateAddress · removeAddress · incrementOrderStats · incrementSpending · getCount · getCountByType · resolveForCheckout · bulkUpdateStatus · upgradeType

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.