Tasks
Tasks · 7 операцій
List tasks
/api/taskTasks with filters: deadlineBucket (OVERDUE, TODAY, TOMORROW, WEEK, LATER), deadline range, completed range (completedStart/completedEnd with isCompleted=true), type, assignee. For "my tasks" pass assigneeUserIds with the current user id (iAmResponsible means the manager of the linked student, not the assignee). Paginated; "total" is the full count.
list_tasks
Параметри запиту · 28
pageмін. 1 · за замовчуванням 1pageSize1–250 · за замовчуванням 20sortByrelevance: open tasks by deadline (overdue first), then completed ones; used by card lists.Одне з: isCompleted deadline relevancesortOrderОдне з: ASC DESCtaskIds—deadlineBucketBoard column; its bounds are computed in the school time zone.Одне з: OVERDUE TODAY TOMORROW WEEK LATERisCompleted—textOfTask—Показати ще 20
deadlineStartPeriod start, a school-local calendar day.deadlineEndPeriod end, inclusive: the end of that school-local day.completedStartCompleted from, a school-local calendar day; pair with isCompleted=true.completedEndCompleted until, inclusive: the end of that school-local day.resultOfTask—typeId—subtypeId—assigneeUserId—assigneeUserIds—managerIdsManager of the linked student or lead, not the task assignee.iAmResponsibleTasks whose linked student or lead is managed by the current user (taken from the session).studentId—studentIds—withLeadTasksAlso include tasks of the student's leads, created before conversion.leadId—leadIds—groupId—groupIds—isArchivalза замовчуванням falsecf—Відповідь · 200
application/json
statusCodeприклад 200message—data4 поля
total—totalPages—currentPage—tasks13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl "https://your-school.rist.pro/api/task?isArchival=false" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/task?isArchival=false", {
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/task",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
params={
"isArchival": False
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"total": 0,
"totalPages": 0,
"currentPage": 0,
"tasks": [
{
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
]
}
}Count tasks by assignee or type
/api/task/breakdownHow many tasks match the GET /api/task filters, per assignee, type or subtype (groupBy). E.g. overdue per manager: groupBy=assignee, deadlineBucket=OVERDUE. One call instead of paging through GET /api/task.
count_tasks
Параметри запиту · 25
cf—taskIds—deadlineBucketBoard column; its bounds are computed in the school time zone.Одне з: OVERDUE TODAY TOMORROW WEEK LATERisCompleted—textOfTask—deadlineStartPeriod start, a school-local calendar day.deadlineEndPeriod end, inclusive: the end of that school-local day.completedStartCompleted from, a school-local calendar day; pair with isCompleted=true.Показати ще 17
completedEndCompleted until, inclusive: the end of that school-local day.resultOfTask—typeId—subtypeId—assigneeUserId—assigneeUserIds—managerIdsManager of the linked student or lead, not the task assignee.iAmResponsibleTasks whose linked student or lead is managed by the current user (taken from the session).studentId—studentIds—withLeadTasksAlso include tasks of the student's leads, created before conversion.leadId—leadIds—groupId—groupIds—isArchivalза замовчуванням falsegroupByWhat to count tasks byОдне з: assignee type subtypeВідповідь · 200
application/json
statusCodeприклад 200message—data3 поля
omittedRowsRows left out by the limittotalRecords matching the filters; a record counted in several rows (a student with two teachers) counts here once.rows3 поля
idId of the grouped value (teacher id, stage id, weekday 1-7) or its code (lesson status); null means "no value".name—count—curl "https://your-school.rist.pro/api/task/breakdown?isArchival=false&groupBy=assignee" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/task/breakdown?isArchival=false&groupBy=assignee", {
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/task/breakdown",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
params={
"isArchival": False,
"groupBy": "assignee"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"omittedRows": 0,
"total": 0,
"rows": [
{
"id": 1,
"name": "string",
"count": 0
}
]
}
}Get task
/api/task/{id}One task with assignee, deadline and linked student, lead or group.
get_task
Параметри шляху · 1
id—Відповідь · 200
application/json
statusCodeприклад 200message—data13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl "https://your-school.rist.pro/api/task/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/task/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/task/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": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
}Create task
/api/taskCreate a task for a staff member, optionally linked to a student, lead or group. Deadline is school local time.
create_task
Тіло запиту
application/json · object
textOfTaskдовжина 1–3000typeIdTask type; defaults to the school's default type.мін. 1subtypeIdмін. 1deadlineSchool-local wall time; defaults to the start of tomorrow. With hasTime false it means the whole day.hasTime—assigneeUserIdDefaults to the task author.мін. 1noteдовжина макс. 1500studentIdsмін. 1leadIdsмін. 1groupIdsмін. 1customFieldsдовільні ключіВідповідь · 201
application/json
statusCodeприклад 201message—data13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl -X POST "https://your-school.rist.pro/api/task" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
}'const response = await fetch("https://your-school.rist.pro/api/task", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
}),
});
const { data } = await response.json();import os
import requests
response = requests.post(
"https://your-school.rist.pro/api/task",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": False,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 201,
"message": "Operation completed successfully",
"data": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
}Update task
/api/task/{id}Change fields of a task. Send only the fields to change.
update_task
Параметри шляху · 1
id—Тіло запиту
application/json · object
textOfTaskдовжина 1–3000typeIdTask type; defaults to the school's default type.мін. 1subtypeIdмін. 1deadlineSchool-local wall time; defaults to the start of tomorrow. With hasTime false it means the whole day.hasTime—assigneeUserIdDefaults to the task author.мін. 1noteдовжина макс. 1500studentIdsмін. 1leadIdsмін. 1groupIdsмін. 1customFieldsдовільні ключіresultOfTaskдовжина макс. 3000deadlineBucketBoard column to move the task to; the server derives the deadline. Mutually exclusive with deadline.Одне з: OVERDUE TODAY TOMORROW WEEK LATERВідповідь · 200
application/json
statusCodeприклад 200message—data13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl -X PATCH "https://your-school.rist.pro/api/task/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {},
"resultOfTask": "string",
"deadlineBucket": "OVERDUE"
}'const response = await fetch("https://your-school.rist.pro/api/task/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {},
"resultOfTask": "string",
"deadlineBucket": "OVERDUE"
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/task/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": False,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {},
"resultOfTask": "string",
"deadlineBucket": "OVERDUE"
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
}Complete task
/api/task/complete/{id}Mark a task as completed, optionally with a result (resultOfTask) and a follow-up task (next).
complete_task
Параметри шляху · 1
id—Тіло запиту
application/json · object
resultOfTaskдовжина макс. 3000next11 полів
textOfTaskдовжина 1–3000typeIdTask type; defaults to the school's default type.мін. 1subtypeIdмін. 1deadlineSchool-local wall time; defaults to the start of tomorrow. With hasTime false it means the whole day.hasTime—assigneeUserIdDefaults to the task author.мін. 1noteдовжина макс. 1500studentIdsмін. 1leadIdsмін. 1groupIdsмін. 1customFieldsдовільні ключіВідповідь · 200
application/json
statusCodeприклад 200message—data2 поля
completed13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіnextThe follow-up task created with the completion, if one was asked for.13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl -X PATCH "https://your-school.rist.pro/api/task/complete/1" \
-H "Authorization: Bearer $RIST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"resultOfTask": "string",
"next": {
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
}
}'const response = await fetch("https://your-school.rist.pro/api/task/complete/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"resultOfTask": "string",
"next": {
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": false,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
}
}),
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/task/complete/1",
headers={"Authorization": f"Bearer {os.environ['RIST_API_KEY']}"},
json={
"resultOfTask": "string",
"next": {
"textOfTask": "string",
"typeId": 1,
"subtypeId": 1,
"deadline": "string",
"hasTime": False,
"assigneeUserId": 1,
"note": "string",
"studentIds": [
1
],
"leadIds": [
1
],
"groupIds": [
1
],
"customFields": {}
}
},
)
response.raise_for_status()
data = response.json()["data"]{
"statusCode": 200,
"message": "Operation completed successfully",
"data": {
"completed": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
},
"next": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
}
}Reopen task
/api/task/reopen/{id}Return a completed task to open. Fails if the task is not completed; may trigger automations.
reopen_task
Параметри шляху · 1
id—Відповідь · 200
application/json
statusCodeприклад 200message—data13 полів
taskId—textOfTask—isCompleted—completedAtформат YYYY-MM-DDTHH:mm:ssdeadlineSchool-local wall time; a point in time only when hasTime is true.формат YYYY-MM-DDTHH:mm:sshasTime—resultOfTask—note—isArchival—updatedAtформат YYYY-MM-DDTHH:mm:sscreatedAtформат YYYY-MM-DDTHH:mm:ssdeadlineBucketBoard column, derived on read.Одне з: OVERDUE TODAY TOMORROW WEEK LATERcustomFieldsдовільні ключіcurl -X PATCH "https://your-school.rist.pro/api/task/reopen/1" \
-H "Authorization: Bearer $RIST_API_KEY"const response = await fetch("https://your-school.rist.pro/api/task/reopen/1", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.RIST_API_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.patch(
"https://your-school.rist.pro/api/task/reopen/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": {
"taskId": 1,
"textOfTask": "string",
"isCompleted": false,
"completedAt": "2026-11-09T14:30:00",
"deadline": "2026-11-09T14:30:00",
"hasTime": false,
"resultOfTask": "string",
"note": "string",
"isArchival": false,
"updatedAt": "2026-11-09T14:30:00",
"createdAt": "2026-11-09T14:30:00",
"deadlineBucket": "OVERDUE",
"customFields": {}
}
}