Subscription plans
Finance · 4 операції
GET
List subscription tariffs
/api/subscriptionSubscription tariffs the school sells: number of lessons, lesson duration, price, validity. Paginated.
list_subscriptions
Параметри запиту · 24
pageмін. 1 · за замовчуванням 1pageSize1–250 · за замовчуванням 20sortByОдне з: nameOfSubscription typeOfSubscription numberOfLesson price pricePerLessonsortOrderОдне з: ASC DESCsubscriptionId—subscriptionIds—nameOfSubscription—typeOfSubscriptionОдне з: PER_LESSON PER_MONTHПоказати ще 16
numberOfLesson—numberOfLessonFrom—numberOfLessonTo—durationOfLesson—durationOfLessonFrom—durationOfLessonTo—price—priceFrom—priceTo—pricePerLesson—pricePerLessonFrom—pricePerLessonTo—dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnote—isArchivalза замовчуванням falseВідповідь · 200
application/json
statusCodeприклад 200message—data4 поля
total—totalPages—currentPage—subscriptions14 полів
price—pricePerLesson—subscriptionId—nameOfSubscription—typeOfSubscriptionОдне з: PER_LESSON PER_MONTHnumberOfLesson—durationOfLesson—dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnote—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssusageOnly non-archived students: an archived student's subscriptions no longer use the tariff.2 поля
activeActive student subscriptions of this tariff: neither archived nor expired.archivedPeriod already over (dateEnd before school today); archive is derived from the date.curl "https://your-school.rist.pro/api/subscription" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/subscription", {
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://your-school.rist.pro/api/subscription",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]Приклад відповіді · 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
Параметри шляху · 1
id—Відповідь · 200
application/json
statusCodeприклад 200message—data13 полів
price—pricePerLesson—subscriptionId—nameOfSubscription—typeOfSubscriptionОдне з: PER_LESSON PER_MONTHnumberOfLesson—durationOfLesson—dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnote—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:sscurl "https://your-school.rist.pro/api/subscription/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/subscription/1", {
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://your-school.rist.pro/api/subscription/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]Приклад відповіді · 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
Create subscription tariff
/api/subscriptionAdd a per-lesson subscription tariff (name, number of lessons, price, optional lesson duration, validity and gift lessons).
create_subscription
Тіло запиту
application/json · object
typeOfSubscriptionAlways PER_LESSON, may be omitted. Kept in the body for clients that still send it.Одне з: PER_LESSONnameOfSubscriptionдовжина 1–150numberOfLessonмін. 1durationOfLessonмін. 1priceмін. 1dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnoteдовжина макс. 1500giftLessonsGift lessons a student subscription created from this tariff gets; later tariff edits do not change it.0–999giftPlacementОдне з: SUFFICIENT_BALANCE INSUFFICIENT_BALANCEВідповідь · 201
application/json
statusCodeприклад 201message—data13 полів
price—pricePerLesson—subscriptionId—nameOfSubscription—typeOfSubscriptionОдне з: PER_LESSON PER_MONTHnumberOfLesson—durationOfLesson—dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnote—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:sscurl -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"
}'const response = await fetch("https://your-school.rist.pro/api/subscription", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"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"
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/subscription",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"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.raise_for_status()
data = response.json()["data"]Приклад відповіді · 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
Параметри шляху · 1
id—Тіло запиту
application/json · object
typeOfSubscriptionAlways PER_LESSON, may be omitted. Kept in the body for clients that still send it.Одне з: PER_LESSONnameOfSubscriptionдовжина 1–150numberOfLessonмін. 1durationOfLessonмін. 1priceмін. 1dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnoteдовжина макс. 1500giftLessonsGift lessons a student subscription created from this tariff gets; later tariff edits do not change it.0–999giftPlacementОдне з: SUFFICIENT_BALANCE INSUFFICIENT_BALANCEВідповідь · 200
application/json
statusCodeприклад 200message—data13 полів
price—pricePerLesson—subscriptionId—nameOfSubscription—typeOfSubscriptionОдне з: PER_LESSON PER_MONTHnumberOfLesson—durationOfLesson—dateStartформат YYYY-MM-DDTHH:mm:ssdateEndформат YYYY-MM-DDTHH:mm:ssnote—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:sscurl -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"
}'const response = await fetch("https://your-school.rist.pro/api/subscription/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"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"
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/subscription/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"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.raise_for_status()
data = response.json()["data"]Приклад відповіді · 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"
}
}