#Сохранить заметку
POST /v1/timeline-logs/:id/note
Сохраняет заметку к одному элементу таймлайна. У каждого элемента таймлайна может быть только одна заметка — повторный вызов с тем же :id перезаписывает предыдущий текст.
#Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id (path) |
number | да | ID лог-записи (или другого элемента таймлайна), к которому прикрепляем заметку |
#Поля запроса (body)
| Поле | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
entityTypeId |
number | да | — | Тип родительской CRM-сущности — той, в чьём таймлайне находится элемент. См. Типы сущностей |
entityId |
number | да | — | ID родительской записи |
text |
string | да | — | Текст заметки. Перезапишет существующую заметку, если она есть |
itemType |
number | нет | 1 |
Тип элемента: 1 — запись истории таймлайна (включая лог-записи), 2 — дело (см. `/v1/activities`) |
#Примеры
#curl — личный ключ
curl -X POST https://vibecode.bitrix24.tech/v1/timeline-logs/5012/note \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"entityTypeId": 2,
"entityId": 100,
"text": "Клиент обычно отвечает в течение 2 дней."
}'
#curl — OAuth-приложение
curl -X POST https://vibecode.bitrix24.tech/v1/timeline-logs/5012/note \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entityTypeId": 2,
"entityId": 100,
"text": "Клиент обычно отвечает в течение 2 дней."
}'
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/timeline-logs/5012/note', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
entityTypeId: 2,
entityId: 100,
text: 'Клиент обычно отвечает в течение 2 дней.',
}),
})
const { success, data } = await res.json()
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/timeline-logs/5012/note', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
entityTypeId: 2,
entityId: 100,
text: 'Клиент обычно отвечает в течение 2 дней.',
}),
})
const { success, data } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data.saved |
boolean | Всегда true — подтверждение операции |
#Пример ответа
HTTP 201:
{
"success": true,
"data": { "saved": true }
}
#Пример ответа при ошибке
400 — пропущено обязательное поле:
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "Required body: entityTypeId (positive int), entityId (positive int), text (string). Optional: itemType (default 1)"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
Не передан или некорректен entityTypeId / entityId / text, либо itemType не равен 1 или 2 |
| 422 | BITRIX_ERROR |
Битрикс24 отклонил запрос (например, item с указанным id не существует) |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа crm |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.
#Известные особенности
Один вызов создаёт или обновляет. Если у элемента нет заметки — создастся; если есть — текст перезапишется. Отдельного метода для обновления нет, повторный POST с новым текстом и есть «обновление».
Не валидирует существование :id лог-записи. Если передать id несуществующей записи — save всё равно вернёт 201 + {saved: true}. Заметка реально не привяжется — при попытке прочитать через `GET /:id/note` ответом будет 404 ENTITY_NOT_FOUND. Перед save убедитесь, что лог-запись существует.
itemType: 1 подходит для лог-записей и комментариев таймлайна. Используйте itemType: 2 только если работаете с делом из `/v1/activities`.
Заметка и лог-запись — разные понятия. Лог-запись — самостоятельный элемент в истории таймлайна (создаётся через `POST /v1/timeline-logs`). Заметка — короткий комментарий, прикреплённый к элементу. У одного элемента максимум одна заметка.
Заметку нельзя получить без entityTypeId + entityId. Несмотря на то что заметка привязана к конкретному itemId, B24 требует контекст родительской сущности при чтении и удалении. Сохраняйте эти параметры при создании.
#Смотрите также
- Получить заметку — прочитать текст и автора
- Удалить заметку — параметры передаются в query, не в body
- Создать лог-запись — основной элемент, к которому крепится заметка
- Закрепить запись — выделить запись с заметкой в верхней части таймлайна