Regular lessons
Learning · 9 operations
/api/regular-lesson/student/{id}GETList regular schedule of a group/api/regular-lesson/group/{id}POSTCheck regular schedule conflicts/api/regular-lesson/check-conflictsPOSTCreate regular schedule for a student/api/regular-lesson/studentPOSTCreate regular schedule for a group/api/regular-lesson/groupPUTUpdate regular schedule of a group/api/regular-lesson/group/{id}PATCHUpdate regular schedule of a student/api/regular-lesson/student/{id}DELETEDelete regular schedule of a student/api/regular-lesson/student/{id}DELETEDelete regular schedule of a group/api/regular-lesson/group/{id}List regular schedule of a student
/api/regular-lesson/student/{id}Recurring individual lesson rules (weekday, time, period, teacher) of one student.
list_student_regular_lessons
Path parameters · 1
id—Response · 200
application/json
statusCodeexample 200message—data9 fields
regularLessonId—dayOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:sstimeStart—timeEnd—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:sscurl "https://your-school.rist.pro/api/regular-lesson/student/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/regular-lesson/student/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/regular-lesson/student/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": [
{
"regularLessonId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"timeStart": "string",
"timeEnd": "string",
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00"
}
]
}List regular schedule of a group
/api/regular-lesson/group/{id}Recurring lesson rules (weekday, time, period, teacher) of one study group.
list_group_regular_lessons
Path parameters · 1
id—Response · 200
application/json
statusCodeexample 200message—data9 fields
regularLessonId—dayOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdateStartformat YYYY-MM-DDTHH:mm:ssdateEndformat YYYY-MM-DDTHH:mm:sstimeStart—timeEnd—updatedAtformat YYYY-MM-DDTHH:mm:sscreatedAtformat YYYY-MM-DDTHH:mm:sscurl "https://your-school.rist.pro/api/regular-lesson/group/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/regular-lesson/group/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/regular-lesson/group/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": [
{
"regularLessonId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "2026-11-09T14:30:00",
"dateEnd": "2026-11-09T14:30:00",
"timeStart": "string",
"timeEnd": "string",
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00"
}
]
}Check regular schedule conflicts
/api/regular-lesson/check-conflictsRead-only check of a would-be recurring rule against teacher work schedule, busy teacher and busy room. A section is null when the role may not run that check. Changes nothing.
check_regular_lesson_conflicts
Request body
application/json · object
teacherIdmin 1audienceIdmin 1daysOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdefault WEEKLYdateStart—dateEnd—timeStart—timeEnd—excludeRegularLessonIdWhen editing: this rule's own lessons are recreated by the update, so they are not conflicts.min 1Response · 200
application/json
statusCodeexample 200message—data4 fields
workSchedule3 fields
daysOfWeek—dates—count—teacher3 fields
first3 fields
date—conflictDateTimeStart—conflictDateTimeEnd—dates—count—audience3 fields
first3 fields
date—conflictDateTimeStart—conflictDateTimeEnd—dates—count—totalOccurrences—curl -X POST "https://your-school.rist.pro/api/regular-lesson/check-conflicts" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"teacherId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string",
"excludeRegularLessonId": 1
}'const response = await fetch("https://your-school.rist.pro/api/regular-lesson/check-conflicts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"teacherId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string",
"excludeRegularLessonId": 1
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/regular-lesson/check-conflicts",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"teacherId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string",
"excludeRegularLessonId": 1
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"workSchedule": {
"daysOfWeek": [
0
],
"dates": [
"string"
],
"count": 0
},
"teacher": {
"first": {
"date": "string",
"conflictDateTimeStart": "string",
"conflictDateTimeEnd": "string"
},
"dates": [
"string"
],
"count": 0
},
"audience": {
"first": {
"date": "string",
"conflictDateTimeStart": "string",
"conflictDateTimeEnd": "string"
},
"dates": [
"string"
],
"count": 0
},
"totalOccurrences": 0
}
}Create regular schedule for a student
/api/regular-lesson/studentCreate recurring individual lessons for a student (studentId, daysOfWeek, time, period, teacher, subject, individual lesson type) and generate the lessons. Run POST /api/regular-lesson/check-conflicts first.
create_student_regular_lesson
Request body
application/json · object
studentIdmin 1groupIdmin 1teacherIdmin 1typeOfLessonIdmin 1subjectIdmin 1teachingProgramIdmin 1audienceIdmin 1daysOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdefault WEEKLYdateStart—dateEnd—timeStart—timeEnd—Response · 201
application/json
curl -X POST "https://your-school.rist.pro/api/regular-lesson/student" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}'const response = await fetch("https://your-school.rist.pro/api/regular-lesson/student", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/regular-lesson/student",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 201,
"message": "Operation completed successfully",
"data": {}
}Create regular schedule for a group
/api/regular-lesson/groupCreate recurring lessons for a group (groupId, daysOfWeek, time, period, teacher, subject, group lesson type) and generate the lessons. Run POST /api/regular-lesson/check-conflicts first.
create_group_regular_lesson
Request body
application/json · object
studentIdmin 1groupIdmin 1teacherIdmin 1typeOfLessonIdmin 1subjectIdmin 1teachingProgramIdmin 1audienceIdmin 1daysOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdefault WEEKLYdateStart—dateEnd—timeStart—timeEnd—Response · 201
application/json
curl -X POST "https://your-school.rist.pro/api/regular-lesson/group" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}'const response = await fetch("https://your-school.rist.pro/api/regular-lesson/group", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/regular-lesson/group",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"studentId": 1,
"groupId": 1,
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"daysOfWeek": [
0
],
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 201,
"message": "Operation completed successfully",
"data": {}
}Update regular schedule of a group
/api/regular-lesson/group/{id}Change one recurring rule of a group. Regenerates its lessons: untouched lessons are deleted and recreated, edited or conducted ones stay. Confirm with the user first.
update_group_regular_lesson
Path parameters · 1
id—Request body
application/json · object
teacherIdmin 1typeOfLessonIdmin 1subjectIdmin 1teachingProgramIdmin 1audienceIdmin 1dayOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdefault WEEKLYdateStart—dateEnd—timeStart—timeEnd—Response · 200
application/json
curl -X PUT "https://your-school.rist.pro/api/regular-lesson/group/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}'const response = await fetch("https://your-school.rist.pro/api/regular-lesson/group/1", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}),
});
const { data } = await response.json();import os
import requests
response = requests.put(
"https://your-school.rist.pro/api/regular-lesson/group/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {}
}Update regular schedule of a student
/api/regular-lesson/student/{id}Change one recurring rule of a student. Regenerates its lessons: untouched lessons are deleted and recreated, edited or conducted ones stay. Confirm with the user first.
update_student_regular_lesson
Path parameters · 1
id—Request body
application/json · object
teacherIdmin 1typeOfLessonIdmin 1subjectIdmin 1teachingProgramIdmin 1audienceIdmin 1dayOfWeek—frequencyOne of: WEEKLY BIWEEKLY MONTHLYdefault WEEKLYdateStart—dateEnd—timeStart—timeEnd—Response · 200
application/json
curl -X PATCH "https://your-school.rist.pro/api/regular-lesson/student/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}'const response = await fetch("https://your-school.rist.pro/api/regular-lesson/student/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/regular-lesson/student/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"teacherId": 1,
"typeOfLessonId": 1,
"subjectId": 1,
"teachingProgramId": 1,
"audienceId": 1,
"dayOfWeek": 0,
"frequency": "WEEKLY",
"dateStart": "string",
"dateEnd": "string",
"timeStart": "string",
"timeEnd": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {}
}Delete regular schedule of a student
/api/regular-lesson/student/{id}Delete one recurring rule of a student together with its untouched lessons; edited or conducted lessons stay. Confirm with the user first.
delete_student_regular_lesson
Path parameters · 1
id—Response · 200
application/json
curl -X DELETE "https://your-school.rist.pro/api/regular-lesson/student/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/regular-lesson/student/1", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.delete(
"https://your-school.rist.pro/api/regular-lesson/student/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": …
}Delete regular schedule of a group
/api/regular-lesson/group/{id}Delete one recurring rule of a group together with its untouched lessons; edited or conducted lessons stay. Confirm with the user first.
delete_group_regular_lesson
Path parameters · 1
id—Response · 200
application/json
curl -X DELETE "https://your-school.rist.pro/api/regular-lesson/group/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/regular-lesson/group/1", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.delete(
"https://your-school.rist.pro/api/regular-lesson/group/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": …
}