Перейти к содержимому

Get Agenda

GET
/v1/calendar/agenda
curl --request GET \
--url 'https://api.cloud.agentums.ru/v1/calendar/agenda?since=&until=&include=events%2Ctasks' \
--header 'Authorization: Bearer <token>'

Лента вхождений: серия здесь раскрыта, каждая встреча отдельной строкой.

Союз считается на СЕРВЕРЕ (поле kind), а не собирается клиентом: бот и SDK не повторят ни сортировку, ни раскладку по дням, а API — это и есть продукт.

Границы окна разбирает parse_when, а НЕ pydantic через тип datetime. Причина не в красоте: pydantic превращает 2026-07-27 в НАИВНЫЙ момент, тот встречается с aware-now ниже по стеку, и сравнение падает TypeError-ом — весь экран «Месяц» отвечал 500. Даже если наивность чинить на месте, оставалось бы второе: голая дата — это дата В ПОЯСЕ ВЛАДЕЛЬЦА, а не в UTC, и приклеенный UTC сдвигал бы окно на смещение зоны, пряча ранние встречи.

since
Since

ГГГГ-ММ-ДД или ГГГГ-ММ-ДДTЧЧ:ММ — местное время

string
""

ГГГГ-ММ-ДД или ГГГГ-ММ-ДДTЧЧ:ММ — местное время

until
Until

То же; голая дата включает день целиком

string
""

То же; голая дата включает день целиком

include
Include
string
default: events,tasks /^(events|tasks|events,tasks)$/

Successful Response

Media typeapplication/json
AgendaOut
object
items
required
Items
Array<object>
AgendaItem

Одна строка ленты: событие календаря ИЛИ поручение со сроком.

kind — дискриминатор. Он появился раньше самого наложения намеренно: клиенты писались против него, и добавление второй ветки стало ровно тем аддитивным изменением, которым и задумывалось.

object
all_day
All Day
boolean
conflict
Conflict
boolean
day
required
Day
string
day_label
Day Label
string
""
ends_at
required
Ends At
string format: date-time
id
required
Id
string format: uuid
kind
Kind
string
default: event
location
Location
string
""
number
required
Number
integer
occurrence_at
required
Occurrence At
string format: date-time
past
Past
boolean
recurrence_label
Recurrence Label
string
""
recurring
Recurring
boolean
reminders
Reminders
Array<integer>
starts_at
required
Starts At
string format: date-time
task
Any of:
AgendaTask

Поручение, наложенное на ленту. Вложено ЦЕЛИКОМ, а не размазано по полям события.

Так клиент переиспользует свою готовую строку поручения дословно, а не собирает третью её версию из чужих полей — и «закрыть» из ленты бьёт в тот же PATCH /v1/tasks/{id}.

object
assignee
Assignee
string
""
due_at
Any of:
string format: date-time
id
required
Id
string format: uuid
number
required
Number
integer
overdue
Overdue
boolean
status
Status
string
default: open
title
required
Title
string
title
required
Title
string
weekday
required
Weekday
string
reminder_note
Reminder Note
string
""
since
required
Since
string format: date-time
today
Today
integer
0
truncated
Truncated
boolean
tz
required
Tz
string
until
required
Until
string format: date-time
upcoming
Upcoming
integer
0
Example
{
"items": [
{
"all_day": false,
"conflict": false,
"day_label": "",
"kind": "event",
"location": "",
"past": false,
"recurrence_label": "",
"recurring": false,
"task": {
"assignee": "",
"overdue": false,
"status": "open"
}
}
],
"reminder_note": "",
"today": 0,
"truncated": false,
"upcoming": 0
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}