Subscription API Reference
Current REST API surface for mobile and admin subscription endpoints.
Subscription API Reference
Audience: frontend developers and API consumers Scope: current controllers in
apps/api/src/modules/subscription
Authentication
Mobile
Base controller: Controller("subscriptions")
GET /subscriptions/modulesis public- all other mobile subscription endpoints require
JwtAuthGuard
Admin
Admin endpoints require:
JwtAuthGuardRoleGuard- matching
@Permissions(...)
Mobile Endpoints
GET /subscriptions/modules
Public.
Returns active modules with:
- active tiers
- each tier's plan
- each plan's active prices
- each plan's features
GET /subscriptions/plans
Authenticated.
Optional query:
moduleIduuid
Returns active plans with:
- tier
- module
- active prices
- features
GET /subscriptions/access
Authenticated.
Returns the caller's non-revoked access rows with:
- module
- plan
- computed
isActive
GET /subscriptions
Authenticated.
Returns the caller's active/trial subscriptions with lightweight module and plan data.
GET /subscriptions/:id
Authenticated.
Returns one subscription with:
- module
- plan
- plan tier
- plan prices
- plan features
- plan price
- subscription history
POST /subscriptions/trial/:planId
Authenticated.
Starts a trial for the selected plan.
Important current rules:
planIdis a route param- the plan must be active
- the plan must have
trialDays > 0 - the user must not have already consumed a trial for that module
- the user must not already have a live active/trial subscription for that module
Admin Catalog Endpoints
Subscription Modules
Base path: /admin/subscription-modules
Permissions:
SubscriptionModules_READSubscriptionModules_CREATESubscriptionModules_UPDATESubscriptionModules_DELETE
Routes:
GET /admin/subscription-modulesGET /admin/subscription-modules/:idPOST /admin/subscription-modulesPATCH /admin/subscription-modules/:idDELETE /admin/subscription-modules/:id
Body notes:
- create/update accept
name,description,icon,isActive - slug is generated from name by the service
Subscription Tiers
Base path: /admin/subscription-tiers
Permissions:
SubscriptionTiers_READSubscriptionTiers_CREATESubscriptionTiers_UPDATESubscriptionTiers_DELETE
Routes:
GET /admin/subscription-tiersGET /admin/subscription-tiers/:idPOST /admin/subscription-tiersPATCH /admin/subscription-tiers/:idDELETE /admin/subscription-tiers/:id
Body notes:
- create requires
moduleIdandname - optional fields include
description,displayOrder,parentTierId,isActive - slug is generated from name by the service
Subscription Plans
Base path: /admin/subscription-plans
Permissions:
SubscriptionPlans_READSubscriptionPlans_CREATESubscriptionPlans_UPDATESubscriptionPlans_DELETE
Routes:
GET /admin/subscription-plansGET /admin/subscription-plans/:idPOST /admin/subscription-plansPATCH /admin/subscription-plans/:idDELETE /admin/subscription-plans/:id
Body notes:
- create requires
tierIdandname - optional fields include
description,trialDays,trialRequiresCc,isActive,displayOrder - current rule: one plan per tier
Subscription Plan Prices
Base path: /admin/subscription-plan-prices
Permissions:
SubscriptionPlanPrices_READSubscriptionPlanPrices_CREATESubscriptionPlanPrices_UPDATESubscriptionPlanPrices_DELETE
Routes:
GET /admin/subscription-plan-pricesGET /admin/subscription-plan-prices/:idPOST /admin/subscription-plan-pricesPATCH /admin/subscription-plan-prices/:idDELETE /admin/subscription-plan-prices/:id
Body notes:
- create requires
planId,label,durationDays,mrpNpr,spNpr - optional flags:
isBase,isFeatured,isActive,displayOrder - service validation rejects
spNpr > mrpNpr
Subscription Plan Features
Base path: /admin/subscription-plan-features
Permissions:
SubscriptionPlanFeatures_READSubscriptionPlanFeatures_CREATESubscriptionPlanFeatures_UPDATESubscriptionPlanFeatures_DELETE
Routes:
GET /admin/subscription-plan-featuresGET /admin/subscription-plan-features/:idPOST /admin/subscription-plan-featuresPATCH /admin/subscription-plan-features/:idDELETE /admin/subscription-plan-features/:id
Body notes:
- create requires
planId,moduleId,featureKey,featureText - optional fields:
featureDetails,value,icon,displayOrder,enabled - feature key must be unique within a plan
Admin Subscription Endpoints
Base path: /admin/subscriptions
Permissions:
Subscriptions_READSubscriptions_CREATESubscriptions_UPDATE
Routes:
GET /admin/subscriptions/analyticsGET /admin/subscriptionsGET /admin/subscriptions/:idPOST /admin/subscriptions/grantPATCH /admin/subscriptions/:id/extendPATCH /admin/subscriptions/:id/revoke
GET /admin/subscriptions
Query supports:
userIdmoduleIdstatus- standard
QueryDtofields:paginationpagesizesortordersearchwhere applicable
POST /admin/subscriptions/grant
Body:
userIdplanId- optional
planPriceId - optional
customEndDate - optional
adminNote
Rule:
- either
planPriceIdorcustomEndDatemust be present
PATCH /admin/subscriptions/:id/extend
Body:
- optional
durationDays - optional
newEndDate - optional
adminNote
Rule:
- one of
durationDaysornewEndDateis required
PATCH /admin/subscriptions/:id/revoke
Body:
- optional
adminNote
Behavior:
- revokes current access immediately
Important Non-Endpoints
The following service methods exist but are not currently exposed by the mobile subscription controller:
createPendingPurchase()activateSubscription()handlePaymentFailure()
Do not rely on older docs that describe payment initiation and verification endpoints under the current subscription controller.