SubscriptionResource
Introduction
Subscription Resource.
Hosts APIs to create, manage, share, and purchase subscriptions.
Main capabilities:
Read active/user/admin subscription lists and counts
Create, update, and delete subscriptions
Share subscriptions with users and manage sharing entries
Retrieve available subscription types
Generate Stripe checkout URL and confirm Stripe checkout callback
All endpoints are under base path /subscriptions.
Authentication:
Most endpoints require x-session-token.
Stripe confirmation callback endpoint is called by Stripe and uses path parameter only.
Common Models
- SubscriptionViewModel:
subscriptionId, name, description, typeId, typeName, buyDate, startDate, endDate, durationDays, userId, organizationId, organizationName, buySuccess, readOnly
- SubscriptionListViewModel:
subscriptionId, ownerUserId, name, typeId, typeName, startDate, endDate, organizationName, organizationId, reason, buySuccess, runningTime, readOnly
- SubscriptionSharingViewModel:
subscriptionId, userId, ownerId, permissions
- SubscriptionTypeViewModel:
typeId, name, description
- StripePaymentDetail:
clientReferenceId, customerName, customerEmail, paymentIntentId, paymentStatus, paymentCurrency, paymentAmountInCents, invoiceId, productDescription, paymentDateInSeconds, date, invoicePdfUrl
- PrimitiveResult:
IntValue, StringValue, DoubleValue, BoolValue
- SuccessResponse:
message
- ErrorResponse:
message
APIs
GET /subscriptions/active
Description: Returns active subscription for current user from valid subscriptions.
Success: 200 OK, body: SubscriptionListViewModel
Return codes: 200, 401, 404, 500
GET /subscriptions/byuser
Description: Returns subscriptions associated with current user (owned/shared/organization-based via permission utility).
Query params: valid (optional boolean, default false)
Success: 200 OK, body: array of SubscriptionListViewModel
Return codes: 200, 401, 500
GET /subscriptions/count
Description: Returns total subscriptions count.
Success: 200 OK, body: PrimitiveResult (IntValue)
Return codes: 200, 401, 403, 500
Notes: admin-only endpoint.
GET /subscriptions/byId
Description: Returns full subscription details by id.
Query params: subscription (required)
Success: 200 OK, body: SubscriptionViewModel
Return codes: 200, 401, 400, 403, 500
POST /subscriptions/add
Description: Creates a subscription and automatically creates a default project with same name.
Body: SubscriptionViewModel
Success: 200 OK, body: SuccessResponse (message contains subscription id)
Return codes: 200, 401, 500
- Notes:
For non-admin callers, target user is forced to current user.
Non-admin callers cannot force buySuccess=true.
Name collisions are resolved by cloning/renaming.
PUT /subscriptions/update
Description: Updates an existing subscription.
Body: SubscriptionViewModel
Success: 200 OK, body: SuccessResponse
Return codes: 200, 401, 400, 403, 500
Notes: non-admin callers cannot change buySuccess state.
DELETE /subscriptions/delete
Description: Deletes a subscription or removes caller sharing if caller is not owner/admin.
Query params: subscription (required)
Success: 200 OK, body: SuccessResponse
Return codes: 200, 401, 400, 403, 500
- Notes:
Owner/admin path removes sharings, deletes related projects, then deletes subscription.
Non-owner shared user path removes own sharing only.
GET /subscriptions/types
Description: Returns available subscription types.
Success: 200 OK, body: array of SubscriptionTypeViewModel
Return codes: 200, 500
GET /subscriptions/stripe/paymentUrl
Description: Generates Stripe checkout URL for a subscription type configured in server settings.
Query params: subscription (required), workspace (optional)
Success: 200 OK, body: SuccessResponse (message contains URL)
Return codes: 200, 401, 400, 403, 500
GET /subscriptions/stripe/confirmation/{CHECKOUT_SESSION_ID}
Description: Stripe callback endpoint to confirm payment and activate subscription.
Path params: CHECKOUT_SESSION_ID (required)
Success: 200 OK
Return codes: 200, 401, 500
- Notes:
Retrieves payment details from Stripe using checkout session id.
Sets buySuccess=true and buyDate when confirmation succeeds.
Optionally emits RabbitMQ message if workspace id is present in client reference id.
GET /subscriptions/list
Description: Admin dashboard listing endpoint with filters, sorting, and paging.
Query params: userfilter, idfilter, namefilter, statusfilter, offset, limit, sortby, order
Success: 200 OK, body: array of SubscriptionListViewModel
Return codes: 200, 401, 403, 500
- Notes:
Admin-only endpoint.
Defaults: offset=0, limit=10, sortby=name, order=asc.