Teachers
Teachers · 8 операцій
/api/teacherGETGet teacher/api/teacher/{id}GETGet teacher qualifications/api/teacher/{id}/qualificationsGETGet teacher work schedule/api/teacher/{id}/work-scheduleGETFind free teachers for a time slot/api/teacher/work-schedule/availableGETTeachers working on a day/api/teacher/work-schedule/dayPOSTCreate teacher/api/teacherPATCHUpdate teacher/api/teacher/{id}List teachers
/api/teacherTeachers with filters (search, subjects, status, qualification) and pagination.
list_teachers
Параметри запиту · 25
pageмін. 1 · за замовчуванням 1pageSize1–250 · за замовчуванням 20sortByОдне з: status name emails phones messengers linkssortOrderОдне з: ASC DESCteacherIds—search—firstName—lastName—Показати ще 17
middleName—genderОдне з: MALE FEMALEnote—typesOfMessengerChannels where the teacher has a connected chat; several values are OR-ed.Одне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGEsubjectIds—statusOfTeacherId—statusOfTeacherIds—teacherReportStatusIds—qualificationSubjectIds—qualificationIds—teacherLevelIds—classOfStudentIds—teachingProgramIds—typeOfLessonIds—isBirthdayToday—isArchivalза замовчуванням falsecf—Відповідь · 200
application/json
statusCodeприклад 200message—data4 поля
total—totalPages—currentPage—teachers16 полів
teacherId—firstName—lastName—middleName—contacts3 поля
type—value—label—dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEnote—avatarUrl—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssworkload2 поля
scheduledHours—workHours—status3 поля
statusOfTeacherId—nameOfStatus—showInWorkCalendar—chatsConnected chats; the table row shows their channel icons.4 поля
chatParticipantId—chatId—createdAtформат YYYY-MM-DDTHH:mm:sschatAlways present at runtime; optional because card selects are built dynamically
and TS cannot prove the nested object exists.5 полів
chatId—contactName—avatar—lastMessageAtформат YYYY-MM-DDTHH:mm:ssmessenger4 поля
messengerId—nameOfMessenger—typeOfMessengerОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGEcapabilitiesWhat the channel supports; null when its adapter is not registered, so the chat is read-only.customFieldsCustom field values for the columns selected in the table preset.довільні ключіcurl "https://your-school.rist.pro/api/teacher" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher", {
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/teacher",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"total": 0,
"totalPages": 0,
"currentPage": 0,
"teachers": [
{
"teacherId": 1,
"firstName": "string",
"lastName": "string",
"middleName": "string",
"contacts": [
{
"type": "string",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"workload": {
"scheduledHours": 0,
"workHours": 0
},
"status": {
"statusOfTeacherId": 1,
"nameOfStatus": "string",
"showInWorkCalendar": false
},
"chats": [
{
"chatParticipantId": 1,
"chatId": 1,
"createdAt": "2026-11-09T14:30:00",
"chat": {
"chatId": 1,
"contactName": "string",
"avatar": "string",
"lastMessageAt": "2026-11-09T14:30:00",
"messenger": {
"messengerId": 1,
"nameOfMessenger": "string",
"typeOfMessenger": "TELEGRAM_BOT",
"capabilities": {}
}
}
}
],
"customFields": {}
}
]
}
}Get teacher
/api/teacher/{id}One teacher card with contacts, subjects and custom fields.
get_teacher
Параметри шляху · 1
id—Відповідь · 200
application/json
statusCodeприклад 200message—data19 полів
teacherId—firstName—lastName—middleName—contacts3 поля
type—value—label—dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEnote—payoutMethodPayout details; returned only with the payoutDetails field permission.Одне з: CARD IBAN CASHpayoutRecipient—payoutDetails—payoutNote—payoutAccount2 поля
accountId—nameOfAccount—avatarUrl—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:sschats4 поля
chatParticipantId—chatId—createdAtформат YYYY-MM-DDTHH:mm:sschatAlways present at runtime; optional because card selects are built dynamically
and TS cannot prove the nested object exists.5 полів
chatId—contactName—avatar—lastMessageAtформат YYYY-MM-DDTHH:mm:ssmessenger4 поля
messengerId—nameOfMessenger—typeOfMessengerОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGEcapabilitiesWhat the channel supports; null when its adapter is not registered, so the chat is read-only.customFieldsдовільні ключіcurl "https://your-school.rist.pro/api/teacher/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher/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/teacher/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": {
"teacherId": 1,
"firstName": "string",
"lastName": "string",
"middleName": "string",
"contacts": [
{
"type": "string",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccount": {
"accountId": 1,
"nameOfAccount": "string"
},
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"chats": [
{
"chatParticipantId": 1,
"chatId": 1,
"createdAt": "2026-11-09T14:30:00",
"chat": {
"chatId": 1,
"contactName": "string",
"avatar": "string",
"lastMessageAt": "2026-11-09T14:30:00",
"messenger": {
"messengerId": 1,
"nameOfMessenger": "string",
"typeOfMessenger": "TELEGRAM_BOT",
"capabilities": {}
}
}
}
],
"customFields": {}
}
}Get teacher qualifications
/api/teacher/{id}/qualificationsQualifications of one teacher.
get_teacher_qualifications
Параметри шляху · 1
id—Відповідь · 200
application/json
curl "https://your-school.rist.pro/api/teacher/1/qualifications" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher/1/qualifications", {
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/teacher/1/qualifications",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": …
}Get teacher work schedule
/api/teacher/{id}/work-scheduleWorking hours of one teacher by weekday (when the teacher is available for lessons).
get_teacher_work_schedule
Параметри шляху · 1
id—Відповідь · 200
application/json
curl "https://your-school.rist.pro/api/teacher/1/work-schedule" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher/1/work-schedule", {
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/teacher/1/work-schedule",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {}
}Find free teachers for a time slot
/api/teacher/work-schedule/availableTeachers whose work schedule covers the slot (dateTimeStart/dateTimeEnd, school local time) and who have no lesson then; cancelled lessons do not count. Optional subjectIds and typeOfLessonIds keep only qualified teachers.
find_available_teachers
Параметри запиту · 4
dateTimeStartSlot start, school local time (YYYY-MM-DDTHH:mm).dateTimeEndSlot end, school local time.subjectIdsOnly teachers qualified for these subjects.typeOfLessonIdsOnly teachers qualified for these lesson types.Відповідь · 200
application/json
curl "https://your-school.rist.pro/api/teacher/work-schedule/available?dateTimeStart=string&dateTimeEnd=string" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher/work-schedule/available?dateTimeStart=string&dateTimeEnd=string", {
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/teacher/work-schedule/available",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
params={
"dateTimeStart": "string",
"dateTimeEnd": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": [
{}
]
}Teachers working on a day
/api/teacher/work-schedule/dayTeachers with working hours on a school day (date, YYYY-MM-DD): their hours and how many lessons (not cancelled) they have that day.
list_teachers_working_on_day
Параметри запиту · 2
dateSchool-local calendar day, YYYY-MM-DD.subjectIdsOnly teachers qualified for these subjects.Відповідь · 200
application/json
curl "https://your-school.rist.pro/api/teacher/work-schedule/day?date=string" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/teacher/work-schedule/day?date=string", {
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/teacher/work-schedule/day",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
params={
"date": "string"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": [
{}
]
}Create teacher
/api/teacherCreate a teacher card. Look the teacher up with GET /api/teacher first to avoid duplicates.
create_teacher
Тіло запиту
application/json · object
firstNameдовжина 1–30lastNameдовжина макс. 30middleNameдовжина макс. 30subjectIdsмін. 1contacts3 поля
typeОдне з: PHONE EMAIL MESSENGER URLvalueдовжина 1–255labelдовжина макс. 50dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEmeetingLinkIdмін. 1statusOfTeacherIdмін. 1teacherReportStatusIdмін. 1noteдовжина макс. 1500payoutMethodОдне з: CARD IBAN CASHpayoutRecipientдовжина макс. 150payoutDetailsдовжина макс. 100payoutNoteдовжина макс. 500payoutAccountIdSchool account the salary is paid from.мін. 1customFieldsдовільні ключіВідповідь · 201
application/json
statusCodeприклад 201message—data16 полів
teacherId—firstName—lastName—middleName—contacts3 поля
type—value—label—dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEnote—avatarUrl—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssworkload2 поля
scheduledHours—workHours—status3 поля
statusOfTeacherId—nameOfStatus—showInWorkCalendar—chatsConnected chats; the table row shows their channel icons.4 поля
chatParticipantId—chatId—createdAtформат YYYY-MM-DDTHH:mm:sschatAlways present at runtime; optional because card selects are built dynamically
and TS cannot prove the nested object exists.5 полів
chatId—contactName—avatar—lastMessageAtформат YYYY-MM-DDTHH:mm:ssmessenger4 поля
messengerId—nameOfMessenger—typeOfMessengerОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGEcapabilitiesWhat the channel supports; null when its adapter is not registered, so the chat is read-only.customFieldsCustom field values for the columns selected in the table preset.довільні ключіcurl -X POST "https://your-school.rist.pro/api/teacher" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
}'const response = await fetch("https://your-school.rist.pro/api/teacher", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/teacher",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 201,
"message": "Operation completed successfully",
"data": {
"teacherId": 1,
"firstName": "string",
"lastName": "string",
"middleName": "string",
"contacts": [
{
"type": "string",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"workload": {
"scheduledHours": 0,
"workHours": 0
},
"status": {
"statusOfTeacherId": 1,
"nameOfStatus": "string",
"showInWorkCalendar": false
},
"chats": [
{
"chatParticipantId": 1,
"chatId": 1,
"createdAt": "2026-11-09T14:30:00",
"chat": {
"chatId": 1,
"contactName": "string",
"avatar": "string",
"lastMessageAt": "2026-11-09T14:30:00",
"messenger": {
"messengerId": 1,
"nameOfMessenger": "string",
"typeOfMessenger": "TELEGRAM_BOT",
"capabilities": {}
}
}
}
],
"customFields": {}
}
}Update teacher
/api/teacher/{id}Change fields of a teacher card. Send only the fields to change: contacts and subjectIds, when sent, replace the whole list.
update_teacher
Параметри шляху · 1
id—Тіло запиту
application/json · object
firstNameдовжина 1–30lastNameдовжина макс. 30middleNameдовжина макс. 30subjectIdsмін. 1contacts3 поля
typeОдне з: PHONE EMAIL MESSENGER URLvalueдовжина 1–255labelдовжина макс. 50dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEmeetingLinkIdмін. 1statusOfTeacherIdмін. 1teacherReportStatusIdмін. 1noteдовжина макс. 1500payoutMethodОдне з: CARD IBAN CASHpayoutRecipientдовжина макс. 150payoutDetailsдовжина макс. 100payoutNoteдовжина макс. 500payoutAccountIdSchool account the salary is paid from.мін. 1customFieldsдовільні ключіВідповідь · 200
application/json
statusCodeприклад 200message—data16 полів
teacherId—firstName—lastName—middleName—contacts3 поля
type—value—label—dateOfBirthформат YYYY-MM-DDTHH:mm:ssgenderОдне з: MALE FEMALEnote—avatarUrl—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssworkload2 поля
scheduledHours—workHours—status3 поля
statusOfTeacherId—nameOfStatus—showInWorkCalendar—chatsConnected chats; the table row shows their channel icons.4 поля
chatParticipantId—chatId—createdAtформат YYYY-MM-DDTHH:mm:sschatAlways present at runtime; optional because card selects are built dynamically
and TS cannot prove the nested object exists.5 полів
chatId—contactName—avatar—lastMessageAtформат YYYY-MM-DDTHH:mm:ssmessenger4 поля
messengerId—nameOfMessenger—typeOfMessengerОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGEcapabilitiesWhat the channel supports; null when its adapter is not registered, so the chat is read-only.customFieldsCustom field values for the columns selected in the table preset.довільні ключіcurl -X PATCH "https://your-school.rist.pro/api/teacher/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
}'const response = await fetch("https://your-school.rist.pro/api/teacher/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/teacher/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"firstName": "string",
"lastName": "string",
"middleName": "string",
"subjectIds": [
1
],
"contacts": [
{
"type": "PHONE",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"meetingLinkId": 1,
"statusOfTeacherId": 1,
"teacherReportStatusId": 1,
"note": "string",
"payoutMethod": "CARD",
"payoutRecipient": "string",
"payoutDetails": "string",
"payoutNote": "string",
"payoutAccountId": 1,
"customFields": {}
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"teacherId": 1,
"firstName": "string",
"lastName": "string",
"middleName": "string",
"contacts": [
{
"type": "string",
"value": "string",
"label": "string"
}
],
"dateOfBirth": "2026-11-09T14:30:00",
"gender": "MALE",
"note": "string",
"avatarUrl": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"workload": {
"scheduledHours": 0,
"workHours": 0
},
"status": {
"statusOfTeacherId": 1,
"nameOfStatus": "string",
"showInWorkCalendar": false
},
"chats": [
{
"chatParticipantId": 1,
"chatId": 1,
"createdAt": "2026-11-09T14:30:00",
"chat": {
"chatId": 1,
"contactName": "string",
"avatar": "string",
"lastMessageAt": "2026-11-09T14:30:00",
"messenger": {
"messengerId": 1,
"nameOfMessenger": "string",
"typeOfMessenger": "TELEGRAM_BOT",
"capabilities": {}
}
}
}
],
"customFields": {}
}
}