Тема
Семейство: meetings
norm_meeting_get
Сводка одной встречи по id: резюме, поручения, темы, ключевые вопросы, участники и повестка — этого достаточно для протокола и задач. Участников сопоставляйте с людьми из norm_people_list по почте: имя из конференции бывает логином или названием устройства. В attendees есть и приглашённые, которые не пришли (attended: false) — в состав встречи их не включайте. Сырой расшифровки ответ не несёт (она велика), только её размер и говоривших; сам текст — в norm_meeting_transcript. Контента нет — это не сбой: content_status говорит, что сообщил источник, retryable — есть ли смысл повторять.
Доступ: чтение · Списковый: нет · Версии: 1
Вход
| Поле | Обязательно | Тип | Значение |
|---|---|---|---|
id | да | string |
Данные ответа
| Поле | При успехе | Тип | Значение |
|---|---|---|---|
action_items | да | список string | |
agenda | нет | string | |
agenda_sources | нет | список string | |
attendees | нет | список Attendee | |
content_status | да | ContentStatus | Состояние контента |
date | да | string (date) | |
ended_at | нет | string (date-time) | |
id | да | string | |
key_questions | да | список string | |
note | нет | string | |
organizer_email | нет | string | |
participant_emails | нет | список string | |
participants | нет | список string | |
platform | нет | string | |
platform_meeting_id | нет | string | |
retryable | да | boolean | |
started_at | нет | string (date-time) | |
summary | нет | string | |
title | да | string | |
topics | да | список string | |
transcript | нет | TranscriptMeta | Сведения о расшифровке |
url | нет | string (uri) |
Пример: успешный ответ
json
{
"source_refs": [
{
"source": "company-data",
"ref": "meeting:01K9F2QH7T8ZRC4M0X5B2VNJ3D",
"label": "Планёрка отдела продаж"
}
],
"freshness": {
"as_of": "2026-09-21T06:00:00.000Z",
"ttl_sec": 604800,
"stale": false
},
"data": {
"id": "01K9F2QH7T8ZRC4M0X5B2VNJ3D",
"title": "Планёрка отдела продаж",
"date": "2026-09-21",
"started_at": "2026-09-21T09:00:00+03:00",
"ended_at": "2026-09-21T09:47:00+03:00",
"url": "https://meetings.example.com/01K9F2QH7T8ZRC4M0X5B2VNJ3D",
"content_status": "ready",
"retryable": false,
"summary": "Разобрали воронку за неделю, договорились о новом правиле квалификации лида.",
"action_items": [
"Анна: до пятницы описать правило квалификации",
"Михаил: выгрузить сделки без ответственного"
],
"topics": [
"Воронка за неделю",
"Квалификация лида",
"Сделки без ответственного"
],
"key_questions": [
"Кто отвечает за лиды из чата?"
],
"participants": [
"Анна Новикова",
"Михаил Петров"
],
"attendees": [
{
"name": "Анна Новикова",
"email": "a.novikova@example.com",
"invited": true,
"attended": true
},
{
"name": "Михаил Петров",
"email": "m.petrov@example.com",
"invited": true,
"attended": true
},
{
"name": "Сергей Ильин",
"email": "s.ilin@example.com",
"invited": true,
"attended": false
}
],
"participant_emails": [
"a.novikova@example.com",
"m.petrov@example.com"
],
"organizer_email": "a.novikova@example.com",
"agenda": "1. Воронка за неделю. 2. Правило квалификации лида. 3. Разное.",
"agenda_sources": [
"calendar",
"conference"
],
"platform": "conference",
"platform_meeting_id": "884 2210 9931",
"transcript": {
"speakers": [
"Анна Новикова",
"Михаил Петров"
],
"total_chars": 48213
}
}
}Пример: случай «no_content»
json
{
"source_refs": [
{
"source": "company-data",
"ref": "meeting:01K9F0YB3M6QA8T2WD7E4RSKPN"
}
],
"freshness": {
"as_of": "2026-09-21T06:00:00.000Z",
"ttl_sec": 604800,
"stale": false
},
"data": {
"id": "01K9F0YB3M6QA8T2WD7E4RSKPN",
"title": "Разбор рекламации",
"date": "2026-09-20",
"started_at": "2026-09-20T14:30:00+03:00",
"content_status": "no_content",
"retryable": true,
"action_items": [],
"topics": [],
"key_questions": [],
"note": "Источник не отдал контент этой встречи и причину не называет. Встреча прошла недавно, отчёт, скорее всего, ещё готовится."
}
}norm_meeting_transcript
Сырая расшифровка встречи окном — дорогой вызов, берите только если сводки не хватило. max_chars — размер окна в символах (умолчание 12000, максимум 24000; значения в разделе limits слепка). Для следующего окна передайте page.next_cursor как cursor. Повторный вызов с тем же курсором вернёт тот же текст. У встречи без расшифровки вызов успешен и возвращает пустой text: это не сбой, менять аргументы бесполезно.
Доступ: чтение · Списковый: нет · Версии: 1
Вход
| Поле | Обязательно | Тип | Значение |
|---|---|---|---|
cursor | нет | string | |
id | да | string | |
max_chars | нет | integer |
Данные ответа
| Поле | При успехе | Тип | Значение |
|---|---|---|---|
content_status | да | ContentStatus | Состояние контента |
date | да | string (date) | |
id | да | string | |
note | нет | string | |
retryable | да | boolean | |
speakers | да | список string | |
text | да | string | |
title | да | string | |
total_chars | да | integer |
Пример: успешный ответ
json
{
"source_refs": [
{
"source": "company-data",
"ref": "meeting:01K9F2QH7T8ZRC4M0X5B2VNJ3D:0..12000"
}
],
"freshness": {
"as_of": "2026-09-21T06:00:00.000Z",
"ttl_sec": 604800,
"stale": false
},
"page": {
"has_more": true,
"next_cursor": "eyJvIjoxMjAwMH0"
},
"data": {
"id": "01K9F2QH7T8ZRC4M0X5B2VNJ3D",
"title": "Планёрка отдела продаж",
"date": "2026-09-21",
"speakers": [
"Анна Новикова",
"Михаил Петров"
],
"total_chars": 48213,
"text": "Анна Новикова: Начнём с воронки. За неделю сорок два лида, квалифицировано двадцать девять…",
"content_status": "ready",
"retryable": false,
"note": "Это первое окно из четырёх. Не делайте выводов обо всей встрече по одному окну."
}
}norm_meetings_list
Встречи компании за интервал дат. Фильтры from и to — дни включительно, за один день from = to. Порядок от свежих к старым; фильтр действует на всех страницах одного обхода. Поле range — окно, за которое у реализации вообще есть встречи: за его пределами встреч нет независимо от фильтра. total — сколько встреч подошло под фильтр до применения страницы. Идентификатор встречи из поля id идёт в norm_meeting_get и norm_meeting_transcript.
Доступ: чтение · Списковый: да · Версии: 1
Вход
| Поле | Обязательно | Тип | Значение |
|---|---|---|---|
cursor | нет | string | |
from | нет | string (date) | |
limit | нет | integer | |
to | нет | string (date) |
Данные ответа
| Поле | При успехе | Тип | Значение |
|---|---|---|---|
meetings | да | список MeetingItem | |
range | да | DateRange | Окно дат |
total | да | integer |
Пример: успешный ответ
json
{
"source_refs": [
{
"source": "company-data",
"ref": "meetings:2026-09-15..2026-09-21",
"label": "Встречи недели"
}
],
"freshness": {
"as_of": "2026-09-21T06:00:00.000Z",
"ttl_sec": 604800,
"stale": false
},
"page": {
"has_more": true,
"next_cursor": "eyJvIjoyfQ"
},
"data": {
"range": {
"from": "2026-08-22",
"to": "2026-09-21"
},
"total": 37,
"meetings": [
{
"id": "01K9F2QH7T8ZRC4M0X5B2VNJ3D",
"title": "Планёрка отдела продаж",
"date": "2026-09-21",
"started_at": "2026-09-21T09:00:00+03:00",
"ended_at": "2026-09-21T09:47:00+03:00",
"recorded": true,
"content_status": "ready",
"tasks_created": 4,
"chain_complete": true,
"participant_emails": [
"a.novikova@example.com",
"m.petrov@example.com"
]
},
{
"id": "01K9F0YB3M6QA8T2WD7E4RSKPN",
"title": "Разбор рекламации",
"date": "2026-09-20",
"started_at": "2026-09-20T14:30:00+03:00",
"ended_at": "2026-09-20T15:05:00+03:00",
"recorded": true,
"content_status": "no_content",
"tasks_created": 0,
"chain_complete": false,
"participant_emails": [
"m.petrov@example.com"
]
}
]
}
}