Students and customersStudents

Students

Students and customers · 9 операцій

GET

List students

/api/student

List students with filters: search, teacher, manager, status, balance range, debtors (isDebtor=true), lessons left (lessonsLeftTo, hasOneLessonLeft, hasNoLessonsLeft), enrolled range (enrolledStart/End: new students), subscription ending in a period (subscriptionEndStart/End: active subscriptions by end date), upcoming lessons in subjects (subjectIds), no lessons in a period (noLessonsStart/End), hasNoCustomer, hasDiscount, archived. Paginated with page/pageSize (max 250); "total" is the full count. Returns only students the current user may see.

list_students

Параметри запиту · 56

pagenumberмін. 1 · за замовчуванням 1
pageSizenumber1–250 · за замовчуванням 20
sortBystringОдне з: status name teacher manager emails phones messengers links
sortOrderstringОдне з: ASC DESC
statusOfStudentIdnumberобовʼязковий—
statusOfStudentIdsnumber[]Any of these statuses; broadcast audiences pick several.
groupIdsnumber[]Active membership in any of these groups.
customerIdnumber—
Показати ще 48
studentIdsnumber[]—
searchstringобовʼязковий—
firstNamestringобовʼязковий—
lastNamestringобовʼязковий—
middleNamestringобовʼязковий—
isChildstringобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
teacherIdnumberобовʼязковий—
teacherIdsnumber[]—
managerIdnumberобовʼязковий—
managerIdsnumber[]—
reasonForRefusalIdnumberобовʼязковий—
reasonForRefusalIdsnumber[]—
teachingProgramIdsnumber[]—
classOfStudentIdsnumber[]—
subscriptionIdsnumber[]—
balanceFromnumber—
balanceTonumber—
lessonsLeftFromnumber—
lessonsLeftTonumber—
notestringобовʼязковий—
typesOfMessengerstring[]Channels where the student has a connected chat; several are OR-ed.Одне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
hasGroupbooleanобовʼязковий—
hasNoGroupbooleanобовʼязковий—
hasNoLessonsbooleanобовʼязковий—
isDebtorbooleanобовʼязковий—
hasNoLessonsLeftbooleanобовʼязковий—
hasOneLessonLeftbooleanобовʼязковий—
hasFreeLessonsbooleanобовʼязковий—
hasFreeTrialLessonsbooleanобовʼязковий—
hasNoSubscriptionbooleanобовʼязковий—
hasExpiredSubscriptionbooleanобовʼязковий—
isDuplicatebooleanобовʼязковий—
isBirthdayTodaybooleanобовʼязковий—
isArchivalobjectобовʼязковийза замовчуванням false
isEnrolledbooleanза замовчуванням true
enrolledStartstringEnrolled (became a paying student) from, a school-local calendar day: "new students this month".
enrolledEndstringEnrolled until, inclusive: the end of that school-local day.
createdStartstringCard created from, a school-local calendar day.
createdEndstringCard created until, inclusive: the end of that school-local day.
subscriptionEndStartstringAn active subscription ends from this school-local day: "subscriptions ending this month".
subscriptionEndEndstringAn active subscription ends until this school-local day, inclusive.
subjectIdsnumber[]Students with upcoming scheduled lessons in these subjects.
hasNoCustomerbooleanNo paying customer (parent) linked.
hasDiscountbooleanHas a discount in effect today.
noLessonsStartstringNo lessons, except cancelled ones, from this school-local day; pair with noLessonsEnd.
noLessonsEndstringNo lessons until this school-local day, inclusive.
cfstring[]—

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject4 поля
totalnumberобовʼязковий—
totalPagesnumberобовʼязковий—
currentPagenumberобовʼязковий—
studentsobject[]обовʼязковий23 поля
studentIdnumberобовʼязковий—
statusobjectобовʼязковийможе бути null3 поля
statusOfStudentIdnumberобовʼязковий—
nameOfStatusstringобовʼязковий—
isArchivalbooleanобовʼязковий—
teachersobject[]обовʼязковий—
managerobjectобовʼязковийможе бути null4 поля
idnumberобовʼязковий—
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
chatsobject[]обовʼязковий4 поля
chatParticipantIdnumberобовʼязковий—
chatIdnumberобовʼязковий—
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 полів
chatIdnumberобовʼязковий—
contactNamestringобовʼязковийможе бути null—
avatarstringобовʼязковийможе бути null—
lastMessageAtstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
messengerobjectобовʼязковий4 поля
messengerIdnumberобовʼязковий—
nameOfMessengerstringобовʼязковий—
typeOfMessengerstringобовʼязковийОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectобовʼязковийможе бути nullWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
middleNamestringобовʼязковийможе бути null—
contactsobject[]обовʼязковий3 поля
typestringобовʼязковий—
valuestringобовʼязковий—
labelstringобовʼязковийможе бути null—
dateOfBirthstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringобовʼязковийможе бути nullStudent's own IANA time zone; null means the school time zone.
isChildbooleanобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
notestringобовʼязковийможе бути null—
archivalNotestringможе бути null—
avatarUrlstringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
updatedAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]обовʼязковий5 полів
balancenumberобовʼязковий—
studentSubscriptionIdnumberобовʼязковий—
typeOfBillstringобовʼязковийОдне з: BASE SEPARATE BURNED CASHBACK
subscriptionobjectможе бути null1 поле
nameOfSubscriptionstring—
effectivePricePerLessonnumberможе бути nullLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
nextMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
customFieldsobjectCustom field values for the columns selected in the table preset.довільні ключі
Помилки400401403429500
curl "https://your-school.rist.pro/api/student" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "total": 0,
    "totalPages": 0,
    "currentPage": 0,
    "students": [
      {
        "studentId": 1,
        "status": {
          "statusOfStudentId": 1,
          "nameOfStatus": "string",
          "isArchival": false
        },
        "teachers": [
          {}
        ],
        "manager": {
          "id": 1,
          "firstName": "string",
          "lastName": "string",
          "isArchival": 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": {}
              }
            }
          }
        ],
        "firstName": "string",
        "lastName": "string",
        "middleName": "string",
        "contacts": [
          {
            "type": "string",
            "value": "string",
            "label": "string"
          }
        ],
        "dateOfBirth": "2026-11-09T14:30:00",
        "timeZone": "string",
        "isChild": false,
        "gender": "MALE",
        "note": "string",
        "archivalNote": "string",
        "avatarUrl": "string",
        "isArchival": false,
        "updatedAt": "2026-11-09T14:30:00",
        "createdAt": "2026-11-09T14:30:00",
        "subscriptions": [
          {
            "balance": 0,
            "studentSubscriptionId": 1,
            "typeOfBill": "BASE",
            "subscription": {
              "nameOfSubscription": "string"
            },
            "effectivePricePerLesson": 0
          }
        ],
        "currentMonthLessons": {
          "planned": 0,
          "conducted": 0,
          "cancelled": 0
        },
        "nextMonthLessons": {
          "planned": 0,
          "conducted": 0,
          "cancelled": 0
        },
        "customFields": {}
      }
    ]
  }
}

How many students match the GET /api/student filters, per status, manager, class or teacher (groupBy); e.g. subscriptionEndStart/End counts students whose subscription ends in a period. For students per subject use GET /api/lesson/breakdown with countBy=students.

count_students

Параметри запиту · 53

cfstring[]—
statusOfStudentIdnumberобовʼязковий—
statusOfStudentIdsnumber[]Any of these statuses; broadcast audiences pick several.
groupIdsnumber[]Active membership in any of these groups.
customerIdnumber—
studentIdsnumber[]—
searchstringобовʼязковий—
firstNamestringобовʼязковий—
Показати ще 45
lastNamestringобовʼязковий—
middleNamestringобовʼязковий—
isChildstringобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
teacherIdnumberобовʼязковий—
teacherIdsnumber[]—
managerIdnumberобовʼязковий—
managerIdsnumber[]—
reasonForRefusalIdnumberобовʼязковий—
reasonForRefusalIdsnumber[]—
teachingProgramIdsnumber[]—
classOfStudentIdsnumber[]—
subscriptionIdsnumber[]—
balanceFromnumber—
balanceTonumber—
lessonsLeftFromnumber—
lessonsLeftTonumber—
notestringобовʼязковий—
typesOfMessengerstring[]Channels where the student has a connected chat; several are OR-ed.Одне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
hasGroupbooleanобовʼязковий—
hasNoGroupbooleanобовʼязковий—
hasNoLessonsbooleanобовʼязковий—
isDebtorbooleanобовʼязковий—
hasNoLessonsLeftbooleanобовʼязковий—
hasOneLessonLeftbooleanобовʼязковий—
hasFreeLessonsbooleanобовʼязковий—
hasFreeTrialLessonsbooleanобовʼязковий—
hasNoSubscriptionbooleanобовʼязковий—
hasExpiredSubscriptionbooleanобовʼязковий—
isDuplicatebooleanобовʼязковий—
isBirthdayTodaybooleanобовʼязковий—
isArchivalobjectобовʼязковийза замовчуванням false
isEnrolledbooleanза замовчуванням true
enrolledStartstringEnrolled (became a paying student) from, a school-local calendar day: "new students this month".
enrolledEndstringEnrolled until, inclusive: the end of that school-local day.
createdStartstringCard created from, a school-local calendar day.
createdEndstringCard created until, inclusive: the end of that school-local day.
subscriptionEndStartstringAn active subscription ends from this school-local day: "subscriptions ending this month".
subscriptionEndEndstringAn active subscription ends until this school-local day, inclusive.
subjectIdsnumber[]Students with upcoming scheduled lessons in these subjects.
hasNoCustomerbooleanNo paying customer (parent) linked.
hasDiscountbooleanHas a discount in effect today.
noLessonsStartstringNo lessons, except cancelled ones, from this school-local day; pair with noLessonsEnd.
noLessonsEndstringNo lessons until this school-local day, inclusive.
groupBystringобовʼязковийWhat to count students by; with teacher a student with two teachers counts in both rows.Одне з: status manager classOfStudent teacher

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject3 поля
omittedRowsnumberRows left out by the limit
totalnumberобовʼязковийRecords matching the filters; a record counted in several rows (a student with two teachers) counts here once.
rowsobject[]обовʼязковий3 поля
idinteger | stringобовʼязковийможе бути nullId of the grouped value (teacher id, stage id, weekday 1-7) or its code (lesson status); null means "no value".
namestringобовʼязковий—
countnumberобовʼязковий—
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/breakdown" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "omittedRows": 0,
    "total": 0,
    "rows": [
      {
        "id": 1,
        "name": "string",
        "count": 0
      }
    ]
  }
}
GET

Students most likely to leave

/api/student/churn-risk

Active students ranked by churn risk score (0-100, higher is riskier) with its factors: attendance, fewer lessons than before, lessons left, subscription ending, days since the last lesson, no regular schedule, late payment. limit and minScore narrow the list.

list_students_by_churn_risk

Параметри запиту · 2

limitnumberобовʼязковийHow many students to return, riskiest first.1–100 · за замовчуванням 20
minScorenumberобовʼязковийLowest risk score to include, 0-100.0–100 · за замовчуванням 0

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject[]—
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/churn-risk?limit=20&minScore=0" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": [
    {}
  ]
}
GET

Get student card

/api/student/{id}

Full student card: contacts, teachers, manager, custom fields. Balances are in GET /api/student/subscription.

get_student

Параметри шляху · 1

idnumberобовʼязковий—

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject19 полів
studentIdnumberобовʼязковий—
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
middleNamestringобовʼязковийможе бути null—
contactsobject[]обовʼязковий3 поля
typestringобовʼязковий—
valuestringобовʼязковий—
labelstringобовʼязковийможе бути null—
dateOfBirthstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringобовʼязковийможе бути nullStudent's own IANA time zone; null means the school time zone.
isChildbooleanобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
payerstringобовʼязковийОдне з: CUSTOMER STUDENT
notestringобовʼязковийможе бути null—
archivalNotestringможе бути null—
customFieldsobjectдовільні ключі
avatarUrlstringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
updatedAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
teachersobject[]обовʼязковий—
chatsobject[]обовʼязковийConnected chats, used for channel icons.4 поля
chatParticipantIdnumberобовʼязковий—
chatIdnumberобовʼязковий—
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 полів
chatIdnumberобовʼязковий—
contactNamestringобовʼязковийможе бути null—
avatarstringобовʼязковийможе бути null—
lastMessageAtstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
messengerobjectобовʼязковий4 поля
messengerIdnumberобовʼязковий—
nameOfMessengerstringобовʼязковий—
typeOfMessengerstringобовʼязковийОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectобовʼязковийможе бути nullWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/1" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "CUSTOMER",
    "note": "string",
    "archivalNote": "string",
    "customFields": {},
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "teachers": [
      {}
    ],
    "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": {}
          }
        }
      }
    ]
  }
}
GET

List groups of a student

/api/student/{id}/groups

Study groups the student belongs to.

list_student_groups

Параметри шляху · 1

idnumberобовʼязковий—

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataanyПоля data ще не описані.
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/1/groups" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

List leads of a student

/api/student/{id}/leads

Sales leads linked to the student, with their pipeline stage.

list_student_leads

Параметри шляху · 1

idnumberобовʼязковий—

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataanyПоля data ще не описані.
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/1/leads" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": …
}
GET

Get student churn risk

/api/student/{id}/churn-risk

Churn risk score of a student with its factors (attendance, days since last lesson, lessons left). Returns null when the role has no access to churn risk or the student is not visible.

get_student_churn_risk

Параметри шляху · 1

idnumberобовʼязковий—

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject—
Помилки400401403429500
curl "https://your-school.rist.pro/api/student/1/churn-risk" \
  -H "Authorization: Bearer $RIST_API_KEY"
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {}
}
POST

Create student

/api/student

Create a new student card. Look the student up with GET /api/student first to avoid duplicates.

create_student

Тіло запиту

application/json · object

statusOfStudentIdnumberобовʼязковийможе бути nullмін. 1
classOfStudentIdnumberобовʼязковийможе бути nullмін. 1
teacherIdsnumber[]обовʼязковиймін. 1
managerIdnumberобовʼязковийможе бути nullмін. 1
customerIdnumberобовʼязковийможе бути nullмін. 1
firstNamestringобовʼязковийдовжина 1–30
lastNamestringможе бути nullдовжина макс. 30
middleNamestringобовʼязковийможе бути nullдовжина макс. 30
contactsobject[]обовʼязковий3 поля
typestringобовʼязковийОдне з: PHONE EMAIL MESSENGER URL
valuestringобовʼязковийдовжина 1–255
labelstringобовʼязковийможе бути nullдовжина макс. 50
dateOfBirthstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringможе бути null—
isChildboolean—
genderstringобовʼязковийОдне з: MALE FEMALE
payerstringобовʼязковийОдне з: STUDENT CUSTOMER
notestringобовʼязковийможе бути nullдовжина макс. 1500
customFieldsobjectдовільні ключі

Відповідь · 201

application/json

statusCodenumberобовʼязковийприклад 201
messagestringобовʼязковий—
dataobject23 поля
studentIdnumberобовʼязковий—
statusobjectобовʼязковийможе бути null3 поля
statusOfStudentIdnumberобовʼязковий—
nameOfStatusstringобовʼязковий—
isArchivalbooleanобовʼязковий—
teachersobject[]обовʼязковий—
managerobjectобовʼязковийможе бути null4 поля
idnumberобовʼязковий—
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
chatsobject[]обовʼязковий4 поля
chatParticipantIdnumberобовʼязковий—
chatIdnumberобовʼязковий—
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 полів
chatIdnumberобовʼязковий—
contactNamestringобовʼязковийможе бути null—
avatarstringобовʼязковийможе бути null—
lastMessageAtstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
messengerobjectобовʼязковий4 поля
messengerIdnumberобовʼязковий—
nameOfMessengerstringобовʼязковий—
typeOfMessengerstringобовʼязковийОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectобовʼязковийможе бути nullWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
middleNamestringобовʼязковийможе бути null—
contactsobject[]обовʼязковий3 поля
typestringобовʼязковий—
valuestringобовʼязковий—
labelstringобовʼязковийможе бути null—
dateOfBirthstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringобовʼязковийможе бути nullStudent's own IANA time zone; null means the school time zone.
isChildbooleanобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
notestringобовʼязковийможе бути null—
archivalNotestringможе бути null—
avatarUrlstringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
updatedAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]обовʼязковий5 полів
balancenumberобовʼязковий—
studentSubscriptionIdnumberобовʼязковий—
typeOfBillstringобовʼязковийОдне з: BASE SEPARATE BURNED CASHBACK
subscriptionobjectможе бути null1 поле
nameOfSubscriptionstring—
effectivePricePerLessonnumberможе бути nullLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
nextMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
customFieldsobjectCustom field values for the columns selected in the table preset.довільні ключі
Помилки400401403429500
curl -X POST "https://your-school.rist.pro/api/student" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "statusOfStudentId": 1,
    "classOfStudentId": 1,
    "teacherIds": [
      1
    ],
    "managerId": 1,
    "customerId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "PHONE",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "STUDENT",
    "note": "string",
    "customFields": {}
  }'
Приклад відповіді · 201
{
  "statusCode": 201,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "status": {
      "statusOfStudentId": 1,
      "nameOfStatus": "string",
      "isArchival": false
    },
    "teachers": [
      {}
    ],
    "manager": {
      "id": 1,
      "firstName": "string",
      "lastName": "string",
      "isArchival": 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": {}
          }
        }
      }
    ],
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "note": "string",
    "archivalNote": "string",
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "subscriptions": [
      {
        "balance": 0,
        "studentSubscriptionId": 1,
        "typeOfBill": "BASE",
        "subscription": {
          "nameOfSubscription": "string"
        },
        "effectivePricePerLesson": 0
      }
    ],
    "currentMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "nextMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "customFields": {}
  }
}
PATCH

Update student

/api/student/{id}

Change fields of a student card. Send only the fields to change.

update_student

Параметри шляху · 1

idnumberобовʼязковий—

Тіло запиту

application/json · object

statusOfStudentIdnumberможе бути nullмін. 1
classOfStudentIdnumberможе бути nullмін. 1
teacherIdsnumber[]мін. 1
managerIdnumberможе бути nullмін. 1
firstNamestringдовжина 1–30
lastNamestringможе бути nullдовжина макс. 30
middleNamestringможе бути nullдовжина макс. 30
contactsobject[]3 поля
typestringобовʼязковийОдне з: PHONE EMAIL MESSENGER URL
valuestringобовʼязковийдовжина 1–255
labelstringобовʼязковийможе бути nullдовжина макс. 50
dateOfBirthstringможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringможе бути null—
isChildboolean—
genderstringОдне з: MALE FEMALE
payerstringОдне з: STUDENT CUSTOMER
notestringможе бути nullдовжина макс. 1500
archivedAtstringможе бути nullформат YYYY-MM-DDTHH:mm:ss
isEnrolledboolean—
customFieldsobjectдовільні ключі

Відповідь · 200

application/json

statusCodenumberобовʼязковийприклад 200
messagestringобовʼязковий—
dataobject23 поля
studentIdnumberобовʼязковий—
statusobjectобовʼязковийможе бути null3 поля
statusOfStudentIdnumberобовʼязковий—
nameOfStatusstringобовʼязковий—
isArchivalbooleanобовʼязковий—
teachersobject[]обовʼязковий—
managerobjectобовʼязковийможе бути null4 поля
idnumberобовʼязковий—
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
chatsobject[]обовʼязковий4 поля
chatParticipantIdnumberобовʼязковий—
chatIdnumberобовʼязковий—
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
chatobjectAlways present at runtime; optional because card selects are built dynamically and TS cannot prove the nested object exists.5 полів
chatIdnumberобовʼязковий—
contactNamestringобовʼязковийможе бути null—
avatarstringобовʼязковийможе бути null—
lastMessageAtstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
messengerobjectобовʼязковий4 поля
messengerIdnumberобовʼязковий—
nameOfMessengerstringобовʼязковий—
typeOfMessengerstringобовʼязковийОдне з: TELEGRAM_BOT INSTAGRAM FACEBOOK IMESSAGE
capabilitiesobjectобовʼязковийможе бути nullWhat the channel supports; null when its adapter is not registered, so the chat is read-only.
firstNamestringобовʼязковий—
lastNamestringобовʼязковийможе бути null—
middleNamestringобовʼязковийможе бути null—
contactsobject[]обовʼязковий3 поля
typestringобовʼязковий—
valuestringобовʼязковий—
labelstringобовʼязковийможе бути null—
dateOfBirthstringобовʼязковийможе бути nullформат YYYY-MM-DDTHH:mm:ss
timeZonestringобовʼязковийможе бути nullStudent's own IANA time zone; null means the school time zone.
isChildbooleanобовʼязковий—
genderstringобовʼязковийОдне з: MALE FEMALE
notestringобовʼязковийможе бути null—
archivalNotestringможе бути null—
avatarUrlstringобовʼязковийможе бути null—
isArchivalbooleanобовʼязковий—
updatedAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
createdAtstringобовʼязковийформат YYYY-MM-DDTHH:mm:ss
subscriptionsobject[]обовʼязковий5 полів
balancenumberобовʼязковий—
studentSubscriptionIdnumberобовʼязковий—
typeOfBillstringобовʼязковийОдне з: BASE SEPARATE BURNED CASHBACK
subscriptionobjectможе бути null1 поле
nameOfSubscriptionstring—
effectivePricePerLessonnumberможе бути nullLesson price after the student's discounts; null for non-per-lesson subscriptions.
currentMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
nextMonthLessonsobject3 поля
plannednumberобовʼязковий—
conductednumberобовʼязковий—
cancellednumberобовʼязковий—
customFieldsobjectCustom field values for the columns selected in the table preset.довільні ключі
Помилки400401403429500
curl -X PATCH "https://your-school.rist.pro/api/student/1" \
  -H "Authorization: Bearer $RIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "statusOfStudentId": 1,
    "classOfStudentId": 1,
    "teacherIds": [
      1
    ],
    "managerId": 1,
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "PHONE",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "payer": "STUDENT",
    "note": "string",
    "archivedAt": "2026-11-09T14:30:00",
    "isEnrolled": false,
    "customFields": {}
  }'
Приклад відповіді · 200
{
  "statusCode": 200,
  "message": "Operation completed successfully",
  "data": {
    "studentId": 1,
    "status": {
      "statusOfStudentId": 1,
      "nameOfStatus": "string",
      "isArchival": false
    },
    "teachers": [
      {}
    ],
    "manager": {
      "id": 1,
      "firstName": "string",
      "lastName": "string",
      "isArchival": 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": {}
          }
        }
      }
    ],
    "firstName": "string",
    "lastName": "string",
    "middleName": "string",
    "contacts": [
      {
        "type": "string",
        "value": "string",
        "label": "string"
      }
    ],
    "dateOfBirth": "2026-11-09T14:30:00",
    "timeZone": "string",
    "isChild": false,
    "gender": "MALE",
    "note": "string",
    "archivalNote": "string",
    "avatarUrl": "string",
    "isArchival": false,
    "updatedAt": "2026-11-09T14:30:00",
    "createdAt": "2026-11-09T14:30:00",
    "subscriptions": [
      {
        "balance": 0,
        "studentSubscriptionId": 1,
        "typeOfBill": "BASE",
        "subscription": {
          "nameOfSubscription": "string"
        },
        "effectivePricePerLesson": 0
      }
    ],
    "currentMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "nextMonthLessons": {
      "planned": 0,
      "conducted": 0,
      "cancelled": 0
    },
    "customFields": {}
  }
}