LearningLessons

Lessons

Learning · 17 operations

GET

List lessons

/api/lesson

Lessons with filters: date range (dateStart/dateEnd in school local time), status, students, groups, teachers, subjects, lesson types, cancellation reasons, presence (with studentIds: whether those students came), trial lessons (isTrial), lessons booked for leads (leadIds or hasLead). Paginated; "total" is the full count.

list_lessons

Query parameters · 24

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: statusOfLesson typeOfLesson subject teacher dateTimeStart
sortOrderstringOne of: ASC DESC
statusOfLessonstringOne of: COMPLETED SCHEDULED CANCELED
dateStartstringRange start as a school-local calendar day, not UTC.
dateEndstring—
studentIdsnumber[]—
Show 16 more
groupIdsnumber[]—
teacherIdnumber—
teacherIdsnumber[]—
typeOfLessonIdnumber—
audienceIdsnumber[]—
subjectIdsnumber[]—
managerIdsnumber[]—
periodnumber—
periodFilterstringOne of: day week month
presencebooleanWith studentIds, presence of those students; alone, of any student. Implies conducted lessons.
typeOfLessonIdsnumber[]—
reasonForCancellationIdsnumber[]—
isTrialbooleantrue: only trial lessons; false: everything but trial.
leadIdsnumber[]Lessons booked for these sales leads.
hasLeadbooleanOnly lessons booked for some sales lead, e.g. trial lessons of prospects.
cfstring[]—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject4 fields
totalnumberrequired—
totalPagesnumberrequired—
currentPagenumberrequired—
lessonsobject[]required12 fields
lessonIdnumberrequired—
statusOfLessonstringrequiredOne of: COMPLETED SCHEDULED CANCELED
typeOfLessonobjectrequired6 fields
typeOfLessonIdnumberrequired—
nameOfTypestringrequired—
basicTypeOfLessonstringrequiredOne of: INDIVIDUAL GROUP TRIAL
colorstringrequirednullable—
iconstringrequired—
isArchivalbooleanrequired—
dateTimeStartstringformat YYYY-MM-DDTHH:mm:ss
dateTimeEndstringformat YYYY-MM-DDTHH:mm:ss
subjectobject3 fields
subjectIdnumberrequired—
nameOfSubjectstringrequired—
isArchivalbooleanrequired—
teacherobjectnullable4 fields
teacherIdnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
isArchivalbooleanrequired—
studentsobject[]5 fields
lessonStudentIdnumberrequired—
presenceboolean—
chargeobjectnullable3 fields
lessonStudentSubscriptionIdnumberrequired—
pricenumber—
isGiftboolean—
isSuccessfulTrialboolean—
studentobjectrequired3 fields
studentIdnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
groupsobject[]2 fields
lessonGroupIdnumberrequired—
groupobjectrequired3 fields
groupIdnumberrequired—
nameOfGroupstringrequired—
isArchivalbooleanrequired—
reasonForCancellationobjectnullable4 fields
reasonForCancellationIdnumberrequired—
nameOfReasonstringrequired—
responsibilitystringrequirednullableOne of: STUDENT TEACHER SCHOOL FORCE_MAJEURE
isArchivalbooleanrequired—
cancellationNotestringnullable—
customFieldsobjectCustom field values; the table shows the columns chosen in the preset.any keys
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "totalPages": 0,
    "currentPage": 0,
    "lessons": [
      {
        "lessonId": 1,
        "statusOfLesson": "COMPLETED",
        "typeOfLesson": {
          "typeOfLessonId": 1,
          "nameOfType": "string",
          "basicTypeOfLesson": "INDIVIDUAL",
          "color": "string",
          "icon": "string",
          "isArchival": false
        },
        "dateTimeStart": "2026-11-09T14:30:00",
        "dateTimeEnd": "2026-11-09T14:30:00",
        "subject": {
          "subjectId": 1,
          "nameOfSubject": "string",
          "isArchival": false
        },
        "teacher": {
          "teacherId": 1,
          "firstName": "string",
          "lastName": "string",
          "isArchival": false
        },
        "students": [
          {
            "lessonStudentId": 1,
            "presence": false,
            "charge": {
              "lessonStudentSubscriptionId": 1,
              "price": 0,
              "isGift": false
            },
            "isSuccessfulTrial": false,
            "student": {
              "studentId": 1,
              "firstName": "string",
              "lastName": "string"
            }
          }
        ],
        "groups": [
          {
            "lessonGroupId": 1,
            "group": {
              "groupId": 1,
              "nameOfGroup": "string",
              "isArchival": false
            }
          }
        ],
        "reasonForCancellation": {
          "reasonForCancellationId": 1,
          "nameOfReason": "string",
          "responsibility": "STUDENT",
          "isArchival": false
        },
        "cancellationNote": "string",
        "customFields": {}
      }
    ]
  }
}

How many lessons match the GET /api/lesson filters, per status, teacher, subject, lesson type, cancellation reason, weekday (1 Monday to 7), start hour, student or group (groupBy). countBy=students counts distinct students instead. Missed lessons per student: groupBy=student, presence=false. One call instead of paging through GET /api/lesson.

count_lessons

Query parameters · 22

cfstring[]—
statusOfLessonstringOne of: COMPLETED SCHEDULED CANCELED
dateStartstringRange start as a school-local calendar day, not UTC.
dateEndstring—
studentIdsnumber[]—
groupIdsnumber[]—
teacherIdnumber—
teacherIdsnumber[]—
Show 14 more
typeOfLessonIdnumber—
audienceIdsnumber[]—
subjectIdsnumber[]—
managerIdsnumber[]—
periodnumber—
periodFilterstringOne of: day week month
presencebooleanWith studentIds, presence of those students; alone, of any student. Implies conducted lessons.
typeOfLessonIdsnumber[]—
reasonForCancellationIdsnumber[]—
isTrialbooleantrue: only trial lessons; false: everything but trial.
leadIdsnumber[]Lessons booked for these sales leads.
hasLeadbooleanOnly lessons booked for some sales lead, e.g. trial lessons of prospects.
groupBystringrequiredWhat to count by; weekday is 1 (Monday) to 7, hour is the school-local start hour.One of: status teacher subject typeOfLesson reasonForCancellation weekday hour student group
countBystringstudents counts distinct students instead of lessons, e.g. how many study each subject.One of: lessons studentsdefault lessons

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject3 fields
omittedRowsnumberRows left out by the limit
totalnumberrequiredRecords matching the filters; a record counted in several rows (a student with two teachers) counts here once.
rowsobject[]required3 fields
idinteger | stringrequirednullableId of the grouped value (teacher id, stage id, weekday 1-7) or its code (lesson status); null means "no value".
namestringrequired—
countnumberrequired—
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/breakdown?groupBy=status" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "omittedRows": 0,
    "total": 0,
    "rows": [
      {
        "id": 1,
        "name": "string",
        "count": 0
      }
    ]
  }
}
GET

Get lesson calendar

/api/lesson/calendar

Lessons for a calendar day, week or month around a date (view + date), with per-day counts.

get_lesson_calendar

Query parameters · 27

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: statusOfLesson typeOfLesson subject teacher dateTimeStart
sortOrderstringOne of: ASC DESC
statusOfLessonstringOne of: COMPLETED SCHEDULED CANCELED
dateStartstringRange start as a school-local calendar day, not UTC.
dateEndstring—
studentIdsnumber[]—
Show 19 more
groupIdsnumber[]—
teacherIdnumber—
teacherIdsnumber[]—
typeOfLessonIdnumber—
audienceIdsnumber[]—
subjectIdsnumber[]—
managerIdsnumber[]—
periodnumber—
periodFilterstringOne of: day week month
presencebooleanWith studentIds, presence of those students; alone, of any student. Implies conducted lessons.
typeOfLessonIdsnumber[]—
reasonForCancellationIdsnumber[]—
isTrialbooleantrue: only trial lessons; false: everything but trial.
leadIdsnumber[]Lessons booked for these sales leads.
hasLeadbooleanOnly lessons booked for some sales lead, e.g. trial lessons of prospects.
cfstring[]—
viewstringrequiredOne of: day week month
datestringrequiredSchool-local calendar day the view is built around, not a UTC moment.
maxEventsPerDaynumber0–10

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/calendar?view=day&date=string" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
GET

Get lesson

/api/lesson/{id}

One lesson with students, attendance, teacher, prices and status; conductedAt and conductedByUser are the first conduct, kept through re-conduct and rollback.

get_lesson

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
GET

Get lessons of a student

/api/lesson/student/{id}

Lessons of one student, with payment status of each lesson when the role may see it.

get_student_lessons

Path parameters · 1

idnumberrequired—

Query parameters · 8

typeOfLessonIdnumberrequired—
subjectIdnumberrequired—
periodnumberrequired—
dateStartstringFirst school-local day of the range (YYYY-MM-DD), inclusive. With dateEnd it overrides period.
dateEndstringLast school-local day of the range (YYYY-MM-DD), inclusive.
lessonCoststringOne of: FREE TRIAL_FREE GIFT
basicTypeOfLessonstringOne of: INDIVIDUAL GROUP TRIAL
studentSubscriptionIdnumberStudent subscription to filter the attendance widget lessons by.

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/student/1?typeOfLessonId=1&subjectId=1&period=0" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Get lessons of a lead

/api/lesson/lead/{id}

Lessons booked for one lead, trial lessons included. Optional dateStart/dateEnd (YYYY-MM-DD, school days).

get_lead_lessons

Path parameters · 1

idnumberrequired—

Query parameters · 8

typeOfLessonIdnumberrequired—
subjectIdnumberrequired—
periodnumberrequired—
dateStartstringFirst school-local day of the range (YYYY-MM-DD), inclusive. With dateEnd it overrides period.
dateEndstringLast school-local day of the range (YYYY-MM-DD), inclusive.
lessonCoststringOne of: FREE TRIAL_FREE GIFT
basicTypeOfLessonstringOne of: INDIVIDUAL GROUP TRIAL
studentSubscriptionIdnumberStudent subscription to filter the attendance widget lessons by.

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/lead/1?typeOfLessonId=1&subjectId=1&period=0" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Get lessons of a group

/api/lesson/group/{id}

Lessons of one study group. Optional dateStart/dateEnd (YYYY-MM-DD, school days).

get_group_lessons

Path parameters · 1

idnumberrequired—

Query parameters · 8

typeOfLessonIdnumberrequired—
subjectIdnumberrequired—
periodnumberrequired—
dateStartstringFirst school-local day of the range (YYYY-MM-DD), inclusive. With dateEnd it overrides period.
dateEndstringLast school-local day of the range (YYYY-MM-DD), inclusive.
lessonCoststringOne of: FREE TRIAL_FREE GIFT
basicTypeOfLessonstringOne of: INDIVIDUAL GROUP TRIAL
studentSubscriptionIdnumberStudent subscription to filter the attendance widget lessons by.

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/group/1?typeOfLessonId=1&subjectId=1&period=0" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Get teacher schedule

/api/lesson/teacher-schedule/{id}

Lessons of one teacher in chronological order, filtered like GET /api/lesson (dateStart/dateEnd in school local time, status, students, groups, subjects). Accrued wage (lessonTeacherWages) and bonuses (lessonTeacherBonuses) are present only when the role may see teacher wages or bonuses; a missing list means no access, an empty list means nothing accrued.

get_teacher_schedule

Path parameters · 1

idnumberrequired—

Query parameters · 24

pagenumbermin 1 · default 1
pageSizenumber1–250 · default 20
sortBystringOne of: statusOfLesson typeOfLesson subject teacher dateTimeStart
sortOrderstringOne of: ASC DESC
statusOfLessonstringOne of: COMPLETED SCHEDULED CANCELED
dateStartstringRange start as a school-local calendar day, not UTC.
dateEndstring—
studentIdsnumber[]—
Show 16 more
groupIdsnumber[]—
teacherIdnumber—
teacherIdsnumber[]—
typeOfLessonIdnumber—
audienceIdsnumber[]—
subjectIdsnumber[]—
managerIdsnumber[]—
periodnumber—
periodFilterstringOne of: day week month
presencebooleanWith studentIds, presence of those students; alone, of any student. Implies conducted lessons.
typeOfLessonIdsnumber[]—
reasonForCancellationIdsnumber[]—
isTrialbooleantrue: only trial lessons; false: everything but trial.
leadIdsnumber[]Lessons booked for these sales leads.
hasLeadbooleanOnly lessons booked for some sales lead, e.g. trial lessons of prospects.
cfstring[]—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataanyThe fields of data are not described yet.
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/teacher-schedule/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Preview cancellation charge

/api/lesson/{id}/cancellation-charge

How much each student would be charged if the lesson were cancelled with the given reasonForCancellationId. Read-only; call before PATCH /api/lesson/canceled/{id} to show the user the amount.

get_cancellation_charge

Path parameters · 1

idnumberrequired—

Query parameters · 1

reasonForCancellationIdnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject2 fields
totalnumberrequired—
studentsobject[]required2 fields
studentIdnumberrequired—
pricenumberrequiredCharged from the student's balance for this cancellation.
Errors400401403429500
curl "https://your-school.rist.pro/api/lesson/1/cancellation-charge?reasonForCancellationId=1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "students": [
      {
        "studentId": 1,
        "price": 0
      }
    ]
  }
}
POST

Schedule lesson

/api/lesson

Schedule a lesson (or a series). Times are school local time. Check GET /api/lesson/calendar for conflicts first. Charges happen only when the lesson is conducted.

create_lesson

Request body

application/json · object

groupIdsnumber[]nullablemin 1 · items min 1
teacherIdnumberrequiredmin 1
audienceIdnumberrequirednullablemin 1
typeOfLessonIdnumberrequiredmin 1
subjectIdnumberrequiredmin 1
teachingProgramIdnumberrequirednullablemin 1
dateTimeStartstringrequired—
dateTimeEndstringrequired—
topicstringrequirednullablelength max 300
homeworkstringrequirednullablelength max 500
notestringrequirednullablelength max 1500
recordingUrlstringrequirednullablelength max 500
studentsobject[]required9 fields
studentIdnumberrequiredmin 1
leadIdnumbernullablemin 1
pricenumberrequired—
presencebooleanrequired—
isGiftboolean—
isSuccessfulTrialboolean—
markIdnumberrequirednullablemin 1
reasonOfMissingIdnumberrequirednullablemin 1
notestringrequirednullablelength max 1500
customFieldsobjectany keys

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject—
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/lesson" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "groupIds": [
      1
    ],
    "teacherId": 1,
    "audienceId": 1,
    "typeOfLessonId": 1,
    "subjectId": 1,
    "teachingProgramId": 1,
    "dateTimeStart": "string",
    "dateTimeEnd": "string",
    "topic": "string",
    "homework": "string",
    "note": "string",
    "recordingUrl": "string",
    "students": [
      {
        "studentId": 1,
        "leadId": 1,
        "price": 0,
        "presence": false,
        "isGift": false,
        "isSuccessfulTrial": false,
        "markId": 1,
        "reasonOfMissingId": 1,
        "note": "string"
      }
    ],
    "customFields": {}
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {}
}
POST

Mark lesson as conducted

/api/lesson/conduct/{id}

Mark a lesson as conducted with attendance. This charges students from their subscriptions and accrues teacher wage and bonuses. Confirm with the user first.

conduct_lesson

Path parameters · 1

idnumberrequired—

Request body

application/json · object

groupIdsnumber[]nullablemin 1 · items min 1
teacherIdnumbermin 1
audienceIdnumbernullablemin 1
typeOfLessonIdnumbermin 1
subjectIdnumbermin 1
teachingProgramIdnumbernullablemin 1
dateTimeStartstring—
dateTimeEndstring—
topicstringnullablelength max 300
homeworkstringnullablelength max 500
notestringnullablelength max 1500
recordingUrlstringnullablelength max 500
studentsobject[]9 fields
studentIdnumberrequiredmin 1
leadIdnumbernullablemin 1
pricenumberrequired—
presencebooleanrequired—
isGiftboolean—
isSuccessfulTrialboolean—
markIdnumberrequirednullablemin 1
reasonOfMissingIdnumberrequirednullablemin 1
notestringrequirednullablelength max 1500
customFieldsobjectany keys

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject—
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/lesson/conduct/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "groupIds": [
      1
    ],
    "teacherId": 1,
    "audienceId": 1,
    "typeOfLessonId": 1,
    "subjectId": 1,
    "teachingProgramId": 1,
    "dateTimeStart": "string",
    "dateTimeEnd": "string",
    "topic": "string",
    "homework": "string",
    "note": "string",
    "recordingUrl": "string",
    "students": [
      {
        "studentId": 1,
        "leadId": 1,
        "price": 0,
        "presence": false,
        "isGift": false,
        "isSuccessfulTrial": false,
        "markId": 1,
        "reasonOfMissingId": 1,
        "note": "string"
      }
    ],
    "customFields": {}
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {}
}
POST

Preview bulk cancellation

/api/lesson/bulk-cancel/preview

Read-only preview of POST /api/lesson/bulk-cancel with the same body: how many lessons would be cancelled, the total charge, the charge per student, and (for a student) how many of their group lessons stay untouched. Changes nothing.

preview_bulk_cancel

Request body

application/json · object

studentIdnumbermin 1
groupIdnumbermin 1
dateStartstringrequired—
dateEndstringrequired—
reasonForCancellationIdnumberrequiredmin 1

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject4 fields
countnumberrequired—
totalnumberrequired—
untouchedGroupLessonsnumberrequiredScheduled group lessons of the student in the period; bulk cancel from the student card skips them. 0 for a group.
studentsobject[]required6 fields
studentIdnumberrequired—
firstNamestringrequired—
lastNamestringrequirednullable—
middleNamestringrequirednullable—
lessonsnumberrequiredLessons of this student that the cancellation takes.
totalnumberrequiredCharged from this student for them.
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/lesson/bulk-cancel/preview" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "studentId": 1,
    "groupId": 1,
    "dateStart": "string",
    "dateEnd": "string",
    "reasonForCancellationId": 1
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "count": 0,
    "total": 0,
    "untouchedGroupLessons": 0,
    "students": [
      {
        "studentId": 1,
        "firstName": "string",
        "lastName": "string",
        "middleName": "string",
        "lessons": 0,
        "total": 0
      }
    ]
  }
}
POST

Cancel lessons in a period

/api/lesson/bulk-cancel

Cancel scheduled lessons between dateStart and dateEnd with one cancellation reason: for a student only their individual and trial lessons (group lessons are cancelled per group), for a group all its lessons. Each student of a lesson may be charged per the reason. Run POST /api/lesson/bulk-cancel/preview and confirm with the user first.

bulk_cancel_lessons

Request body

application/json · object

studentIdnumbermin 1
groupIdnumbermin 1
dateStartstringrequired—
dateEndstringrequired—
reasonForCancellationIdnumberrequiredmin 1

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject1 field
countnumberrequiredRecords the action changed.
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/lesson/bulk-cancel" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "studentId": 1,
    "groupId": 1,
    "dateStart": "string",
    "dateEnd": "string",
    "reasonForCancellationId": 1
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "count": 0
  }
}
POST

Calculate lesson prices

/api/lesson/calculate-prices

Read-only: price per student for a would-be lesson (studentIds, subjectId, typeOfLessonId, start and end in school local time). Needs permission to see lesson prices. Changes nothing.

calculate_lesson_prices

Request body

application/json · object

studentIdsnumber[]requiredmin 1
subjectIdnumberrequiredmin 1
typeOfLessonIdnumberrequiredmin 1
dateTimeStartstringrequired—
dateTimeEndstringrequired—

Response · 201

application/json

statusCodenumberrequiredexample 201
messagestringrequired—
dataobject1 field
pricesobject[]required9 fields
studentIdnumberrequired—
priceForLessonnumberrequired—
durationOfLessonnumberrequirednullable—
constantPricenumberrequirednullable—
discountAmountnumberrequirednullable—
typeOfDiscountstringrequirednullableOne of: NUMERICAL PERCENTAGE MONETARY
numberOfLessonnumberrequirednullable—
subscriptionPricenumberrequirednullable—
isGiftbooleanrequiredConducting now would use a gift lesson from the subscription quota.
Errors400401403429500
curl -X POST "https://your-school.rist.pro/api/lesson/calculate-prices" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "studentIds": [
      1
    ],
    "subjectId": 1,
    "typeOfLessonId": 1,
    "dateTimeStart": "string",
    "dateTimeEnd": "string"
  }'
Response example · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "prices": [
      {
        "studentId": 1,
        "priceForLesson": 0,
        "durationOfLesson": 0,
        "constantPrice": 0,
        "discountAmount": 0,
        "typeOfDiscount": "NUMERICAL",
        "numberOfLesson": 0,
        "subscriptionPrice": 0,
        "isGift": false
      }
    ]
  }
}
PATCH

Update lesson

/api/lesson/{id}

Change time, teacher, students or other fields of a lesson. Send only the fields to change.

update_lesson

Path parameters · 1

idnumberrequired—

Request body

application/json · object

groupIdsnumber[]nullablemin 1 · items min 1
teacherIdnumbermin 1
audienceIdnumbernullablemin 1
typeOfLessonIdnumbermin 1
subjectIdnumbermin 1
teachingProgramIdnumbernullablemin 1
dateTimeStartstring—
dateTimeEndstring—
topicstringnullablelength max 300
homeworkstringnullablelength max 500
notestringnullablelength max 1500
recordingUrlstringnullablelength max 500
studentsobject[]9 fields
studentIdnumberrequiredmin 1
leadIdnumbernullablemin 1
pricenumberrequired—
presencebooleanrequired—
isGiftboolean—
isSuccessfulTrialboolean—
markIdnumberrequirednullablemin 1
reasonOfMissingIdnumberrequirednullablemin 1
notestringrequirednullablelength max 1500
customFieldsobjectany keys

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/lesson/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "groupIds": [
      1
    ],
    "teacherId": 1,
    "audienceId": 1,
    "typeOfLessonId": 1,
    "subjectId": 1,
    "teachingProgramId": 1,
    "dateTimeStart": "string",
    "dateTimeEnd": "string",
    "topic": "string",
    "homework": "string",
    "note": "string",
    "recordingUrl": "string",
    "students": [
      {
        "studentId": 1,
        "leadId": 1,
        "price": 0,
        "presence": false,
        "isGift": false,
        "isSuccessfulTrial": false,
        "markId": 1,
        "reasonOfMissingId": 1,
        "note": "string"
      }
    ],
    "customFields": {}
  }'
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
PATCH

Cancel lesson

/api/lesson/canceled/{id}

Cancel a lesson with a cancellation reason and note. Depending on the reason, students may still be charged. Confirm with the user first.

cancel_lesson

Path parameters · 1

idnumberrequired—

Request body

application/json · object

reasonForCancellationIdnumbernullablemin 1
cancellationNotestringnullablelength max 500

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/lesson/canceled/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reasonForCancellationId": 1,
    "cancellationNote": "string"
  }'
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
PATCH

Roll back conducted lesson

/api/lesson/rollback/{id}

Return a conducted lesson to scheduled: refunds student charges and cashback, reverts teacher wage and bonuses. Confirm with the user first.

rollback_lesson

Path parameters · 1

idnumberrequired—

Response · 200

application/json

statusCodenumberrequiredexample 200
messagestringrequired—
dataobject—
Errors400401403429500
curl -X PATCH "https://your-school.rist.pro/api/lesson/rollback/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Response example · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}