Membership endpoint families
Use this page when you need a membership route the six documented endpoints do not cover. It maps the route families this module’s applets call to their prefix and controller; the Membership endpoints hub routes you to the six documented page by page.
The families, by prefix
Every mapping below is under the tenant prefix core2/tnt/dm/ unless stated, and takes the two
headers on the authentication page: a credential
(Authorization: Bearer … or AccessId + AccessKey) and tenantCode. Module sub-prefixes:
crm/, erp/, mlm/. Route counts are rows of the backend’s route table at commit 4623d9e7ae,
regenerated 7 October 2026, per controller; a route is one method and one path, so a handler
mapped at both /x and /x/backoffice-ep counts twice.
| Family | Prefix | What it serves | Notes |
|---|---|---|---|
| Member record | membership-cards and crm/membership-cards (MembershipCardController, 72 routes) | Create, update, delete, list, get, /query, /query/snapshot, /query/count, a phone or e-mail duplicate check (/duplicates/backoffice); /with-customer/etl-ep creates or updates the member and writes its identity onto the customer | Each operation has backoffice, etl-ep and login-entity-ep variants. The container is bl_crm_membership_hdr plus bl_crm_membership_ext rows |
| Member record, enhanced | crm/membership/cards-hdrs (MembershipCardHdrController, 30) | /query/enhancement, referral look-ups (/referrals/referee/{referral_code}, /referrals/referrer/{login_subject_guid}), label look-ups | Also mapped under a legacy micro-services prefix marked remove later in the source |
| Classes, card types, periods, attachments, audit | membership-class and crm/membership-class (50), crm/membership-card-type-hdrs (12), crm/membership-period-lines (31), crm/membership/attachments (8), membership-audit-trails and crm/membership-audit-trails (12) | The member class (tier) register, card types, membership period lines, uploaded attachments, and the audit trail the Membership Admin screen shows | |
| Imports and reports | crm/membership/import-file-hdrs (17) and its /helper (4); crm/membership-points-transaction/import-file-hdrs (8) and import-file-helpers (4); crm/membership-reports (4); crm/membership-report-file-hdrs (6) | The CSV uploads (members, point transactions) and the membership report queue behind the Membership Admin Upload and Membership Report menus | |
| Points | crm/membership-points-txn (MembershipPointsTxnController, 70) | Create a header with lines, a single line (/txn-line), lines only; read a line, a header, /query, /lines/query; two balance calls that are not alike — /current-balance/query and /current-balance/{cardNo}[/{pointCurrency}] read the running total in bl_crm_membership_points_current_balance (what the till shows), while /balance/{card_no}[/{point_currency}] returns the balance_amount of one control-account lot row for the card — the first one found, in no particular order and whatever its status — not a sum of valid lots; and when that row’s next expiry check has passed, the read rewrites the row (its balance and an end date of now) before returning it. Use current-balance for a balance and the lot rows (membership-points-ctrl-acc, the Points Expiry tab) for what is still valid; recalculation, repost, exception-report and batch-upsert maintenance endpoints | backoffice-ep, etl-ep and login-entity-ep twins throughout |
| Points — control accounts and contras | crm/membership-points-ctrl-acc (13), crm/membership-points-ctrl-contra-details (17), the expiry and recalculation queues and their histories (7 and 6 each) | The per-lot rows that carry date_start, date_end and next_expiry_date_check, and the contra rows that record which lot a redemption or expiry consumed | Written by the balance job; read-mostly for integrations |
| Points totals | core2/dm/membership-points-total (MembershipPointTotalController, 16, platform prefix) | Aggregated point totals | The one membership controller outside core2/tnt/dm/; it still expects tenantCode |
| Point currencies and rates | crm/membership-points-currency (8), crm/membership-points-to-currency-rate (7) | The PTS CCY Module and PTS to CCY Config registers of Membership Admin | membership-points-currency/public-ep/query and /website-ep/{websiteHdrGuid}/query serve the storefront |
| MLM | mlm/programs (7), mlm/program-participants (8), mlm/lineages (8, with /uplines/{participantGuid} and /downlines/{participantGuid}), mlm/invitation (6), mlm/invitation-acceptance (POST "", POST /password-creation), mlm/entity-contacts (6), mlm/mlm-program-cc-ep-link (6) — seven controllers | Programs, their participants, the upline and downline lineage, invitations and their acceptance, entity contacts, and the link from a program to a contact-centre endpoint | The lineage is what an MLM commission scheme walks — see Commission Scheme |
| Vouchers and coupons | erp/coupons (CouponController, 60), erp/coupon/lines (15), erp/coupon-line-scan-events (10), erp/recurring-coupon-hdrs (10), erp/vouchers (VoucherController, 17) | The voucher header (coupon), its ticket serial numbers (coupon/lines), scan and redemption events, recurring voucher templates, and the voucher-item side | The applet the registry calls Voucher Management is a coupon applet in the backend’s vocabulary — see Voucher Management |
Across those families the table holds 731 routes. 224 carry the backoffice-ep segment, 83
etl-ep, 77 login-entity-ep, and 325 carry no segment at all; many of those are the un-suffixed
twin of a backoffice-ep route, mapped to the same handler, so the two names are one endpoint.
Your access key works on the backoffice-ep routes documented here: each handler reads a
signed-in token when one is sent and your key when none is, and the etl-ep twins take the key
alone. The login-entity-ep variants are for a signed-in member reading their own card: they
answer for the cards linked to the token’s user and nothing else, which is what a member portal
wants and an integration does not.