FinanceSubscription plans

Subscription plans

Finance · 4 operations

GET

List subscription tariffs

/api/subscription

Subscription tariffs the school sells: number of lessons, lesson duration, price, validity. Paginated.

list_subscriptions

Query parameters · 24

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: nameOfSubscription typeOfSubscription numberOfLesson price pricePerLesson
sortOrderstringOne of: ASC DESC
subscriptionIdnumberrequired—
subscriptionIdsnumber[]—
nameOfSubscriptionstringrequired—
typeOfSubscriptionstringrequiredOne of: PER_LESSON PER_MONTH
Show 16 more
numberOfLessonnumberrequired—
numberOfLessonFromnumberrequired—
numberOfLessonTonumberrequired—
durationOfLessonnumberrequired—
durationOfLessonFromnumberrequired—
durationOfLessonTonumberrequired—
pricenumberrequired—
priceFromnumberrequired—
priceTonumberrequired—
pricePerLessonnumberrequired—
pricePerLessonFromnumberrequired—
pricePerLessonTonumberrequired—
dateStartstringrequiredformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequiredformat YYYY-MM-DDTHH:mm:ss
notestringrequired—
isArchivalobjectrequireddefault false

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject4 fields
totalnumberrequired—
totalPagesnumberrequired—
currentPagenumberrequired—
subscriptionsobject[]required14 fields
pricenumberrequired—
pricePerLessonnumberrequirednullable—
subscriptionIdnumberrequired—
nameOfSubscriptionstringrequired—
typeOfSubscriptionstringrequiredOne of: PER_LESSON PER_MONTH
numberOfLessonnumberrequired—
durationOfLessonnumberrequirednullable—
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
usageobjectrequiredOnly non-archived students: an archived student's subscriptions no longer use the tariff.2 fields
activenumberrequiredActive student subscriptions of this tariff: neither archived nor expired.
archivednumberrequiredPeriod already over (dateEnd before school today); archive is derived from the date.
Errors400401403429500
curl "https://your-school.rist.pro/api/subscription" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "totalPages": 0,
    "currentPage": 0,
    "subscriptions": [
      {
        "price": 0,
        "pricePerLesson": 0,
        "subscriptionId": 1,
        "nameOfSubscription": "string",
        "typeOfSubscription": "PER_LESSON",
        "numberOfLesson": 0,
        "durationOfLesson": 0,
        "dateStart": "2026-11-09T14:30:00",
        "dateEnd": "2026-11-09T14:30:00",
        "note": "string",
        "isArchival": false,
        "updatedAt": "2026-11-09T14:30:00",
        "createdAt": "2026-11-09T14:30:00",
        "usage": {
          "active": 0,
          "archived": 0
        }
      }
    ]
  }
}
GET

Get subscription tariff

/api/subscription/{id}

One subscription tariff.

get_subscription

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject13 fields
pricenumberrequired—
pricePerLessonnumberrequirednullable—
subscriptionIdnumberrequired—
nameOfSubscriptionstringrequired—
typeOfSubscriptionstringrequiredOne of: PER_LESSON PER_MONTH
numberOfLessonnumberrequired—
durationOfLessonnumberrequirednullable—
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
Errors400401403429500
curl "https://your-school.rist.pro/api/subscription/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "price": 0,
    "pricePerLesson": 0,
    "subscriptionId": 1,
    "nameOfSubscription": "string",
    "typeOfSubscription": "PER_LESSON",
    "numberOfLesson": 0,
    "durationOfLesson": 0,
    "dateStart": "2026-11-09T14:30:00",
    "dateEnd": "2026-11-09T14:30:00",
    "note": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00"
  }
}
POST

Add a per-lesson subscription tariff (name, number of lessons, price, optional lesson duration, validity and gift lessons).

create_subscription

Request body

application/json · object

typeOfSubscriptionstringAlways PER_LESSON, may be omitted. Kept in the body for clients that still send it.One of: PER_LESSON
nameOfSubscriptionstringrequiredlength 1–150
numberOfLessonnumberrequiredmin 1
durationOfLessonnumberrequirednullablemin 1
pricenumberrequiredmin 1
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullablelength max 1500
giftLessonsnumberGift lessons a student subscription created from this tariff gets; later tariff edits do not change it.0–999
giftPlacementstringOne of: SUFFICIENT_BALANCE INSUFFICIENT_BALANCE

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject13 fields
pricenumberrequired—
pricePerLessonnumberrequirednullable—
subscriptionIdnumberrequired—
nameOfSubscriptionstringrequired—
typeOfSubscriptionstringrequiredOne of: PER_LESSON PER_MONTH
numberOfLessonnumberrequired—
durationOfLessonnumberrequirednullable—
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/subscription" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "typeOfSubscription": "PER_LESSON",
    "nameOfSubscription": "string",
    "numberOfLesson": 1,
    "durationOfLesson": 1,
    "price": 1,
    "dateStart": "2026-11-09T14:30:00",
    "dateEnd": "2026-11-09T14:30:00",
    "note": "string",
    "giftLessons": 0,
    "giftPlacement": "SUFFICIENT_BALANCE"
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "price": 0,
    "pricePerLesson": 0,
    "subscriptionId": 1,
    "nameOfSubscription": "string",
    "typeOfSubscription": "PER_LESSON",
    "numberOfLesson": 0,
    "durationOfLesson": 0,
    "dateStart": "2026-11-09T14:30:00",
    "dateEnd": "2026-11-09T14:30:00",
    "note": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00"
  }
}
PATCH

Update subscription tariff

/api/subscription/{id}

Rewrite a subscription tariff. Send the full body as in POST /api/subscription, not only changed fields. Confirm price changes with the user first.

update_subscription

Path parameters · 1

idnumberrequired—

Request body

application/json · object

typeOfSubscriptionstringAlways PER_LESSON, may be omitted. Kept in the body for clients that still send it.One of: PER_LESSON
nameOfSubscriptionstringrequiredlength 1–150
numberOfLessonnumberrequiredmin 1
durationOfLessonnumberrequirednullablemin 1
pricenumberrequiredmin 1
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullablelength max 1500
giftLessonsnumberGift lessons a student subscription created from this tariff gets; later tariff edits do not change it.0–999
giftPlacementstringOne of: SUFFICIENT_BALANCE INSUFFICIENT_BALANCE

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject13 fields
pricenumberrequired—
pricePerLessonnumberrequirednullable—
subscriptionIdnumberrequired—
nameOfSubscriptionstringrequired—
typeOfSubscriptionstringrequiredOne of: PER_LESSON PER_MONTH
numberOfLessonnumberrequired—
durationOfLessonnumberrequirednullable—
dateStartstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
dateEndstringrequirednullableformat YYYY-MM-DDTHH:mm:ss
notestringrequirednullable—
isArchivalbooleanrequired—
updatedAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
createdAtstringrequiredformat YYYY-MM-DDTHH:mm:ss
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/subscription/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "typeOfSubscription": "PER_LESSON",
    "nameOfSubscription": "string",
    "numberOfLesson": 1,
    "durationOfLesson": 1,
    "price": 1,
    "dateStart": "2026-11-09T14:30:00",
    "dateEnd": "2026-11-09T14:30:00",
    "note": "string",
    "giftLessons": 0,
    "giftPlacement": "SUFFICIENT_BALANCE"
  }'
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "price": 0,
    "pricePerLesson": 0,
    "subscriptionId": 1,
    "nameOfSubscription": "string",
    "typeOfSubscription": "PER_LESSON",
    "numberOfLesson": 0,
    "durationOfLesson": 0,
    "dateStart": "2026-11-09T14:30:00",
    "dateEnd": "2026-11-09T14:30:00",
    "note": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00"
  }
}