[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-workday":3,"docs-tabs-workday":6},{"content":4,"lastmod":5},"\n# Рабочий день\n\nУчёт рабочего времени сотрудника: открытие и закрытие дня, пауза, текущий статус, настройки портала и график работы.\n\n**Скоуп:** `timeman` | **Базовый URL:** `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1` | **Авторизация:** `X-Api-Key`\n\n[Какой ключ выбрать](#какой-ключ-выбрать) | [Быстрый старт](#быстрый-старт) | [Полный пример](#полный-пример-автоматический-учёт-рабочего-дня) | [Справочник эндпоинтов](#справочник-эндпоинтов) | [Коды ошибок](#коды-ошибок)\n\n## Какой ключ выбрать\n\nРаздел работает с двумя типами ключей. Выбор определяет, от чьего имени фиксируется рабочий день.\n\n| Сценарий | Ключ | Заголовки запроса |\n|---------|------|-------------------|\n| Личный учёт времени, скрипт на собственном сервере | Личный API-ключ `vibe_api_…` | `X-Api-Key: vibe_api_…` |\n| OAuth-приложение из каталога Вайбкод — учёт времени для каждого пользователя, установившего приложение | Ключ авторизации `vibe_app_…` | `X-Api-Key: vibe_app_…` + `Authorization: Bearer \u003Csession_token>` |\n\nДействия фиксируются от лица владельца ключа (для личного) или пользователя сессии (для OAuth). Подробное описание форматов и получение `session_token` — [Ключи и авторизация](\u002Fdocs\u002Fkeys-auth).\n\n---\n\n## Быстрый старт\n\n### 1. Узнайте текущий статус\n\n```bash\ncurl -H \"X-Api-Key: YOUR_API_KEY\" \\\n  https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fworkday\u002Fstatus\n```\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"status\": \"CLOSED\",\n    \"timeStart\": \"2026-05-04T09:00:00+03:00\",\n    \"timeFinish\": \"2026-05-04T18:00:00+03:00\",\n    \"duration\": \"08:00:00\",\n    \"timeLeaks\": \"00:30:00\",\n    \"active\": true,\n    \"ipOpen\": \"203.0.113.10\",\n    \"ipClose\": \"203.0.113.10\",\n    \"latOpen\": 0,\n    \"lonOpen\": 0,\n    \"latClose\": 0,\n    \"lonClose\": 0,\n    \"tzOffset\": 10800\n  }\n}\n```\n\n### 2. Откройте рабочий день\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fworkday\u002Fopen \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{}'\n```\n\n### 3. Закройте день с отчётом\n\n```bash\ncurl -X POST https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fworkday\u002Fclose \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"report\": \"Закрыл 5 сделок, обработал 12 лидов\" }'\n```\n\n---\n\n## Полный пример: автоматический учёт рабочего дня\n\nСценарий: скрипт открывает день в 9:00, отслеживает обеденный перерыв и закрывает день в 18:00 с автоматическим отчётом.\n\n```javascript\nconst VIBE_KEY = process.env.VIBE_KEY\nconst BASE = 'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1'\n\nasync function api(method, path, body = null) {\n  const opts = {\n    method,\n    headers: { 'X-Api-Key': VIBE_KEY }\n  }\n  if (body) {\n    opts.headers['Content-Type'] = 'application\u002Fjson'\n    opts.body = JSON.stringify(body)\n  }\n  const res = await fetch(`${BASE}${path}`, opts)\n  return res.json()\n}\n\n\u002F\u002F 1. Узнаём текущий статус — чтобы не открывать уже открытый день\nconst { data: current } = await api('GET', '\u002Fworkday\u002Fstatus')\nconsole.log('Текущий статус:', current.status)\n\n\u002F\u002F 2. Открываем рабочий день, если он закрыт\nif (current.status === 'CLOSED' || !current.status) {\n  const { data: opened } = await api('POST', '\u002Fworkday\u002Fopen', {})\n  console.log('День открыт в', opened.timeStart)\n} else {\n  console.log('День уже открыт с', current.timeStart)\n}\n\n\u002F\u002F 3. Получаем настройки учёта на портале\nconst { data: settings } = await api('GET', '\u002Fworkday\u002Fsettings')\nconsole.log('Допустимое начало дня до:', settings.ufTmMaxStart)\nconsole.log('Минимальная длительность дня:', settings.ufTmMinDuration)\n\n\u002F\u002F 4. Уход на обед — ставим паузу\nconst { data: paused } = await api('POST', '\u002Fworkday\u002Fpause', {})\nconsole.log('День на паузе с', paused.timeFinish)\n\n\u002F\u002F ...перерыв...\n\n\u002F\u002F 5. Возвращаемся с обеда — продолжаем день\nconst { data: resumed } = await api('POST', '\u002Fworkday\u002Fopen', {})\nconsole.log('День продолжен, статус:', resumed.status)\n\n\u002F\u002F 6. Конец рабочего дня — закрываем с отчётом\nconst { data: closed } = await api('POST', '\u002Fworkday\u002Fclose', {\n  report: 'Автоматическое закрытие'\n})\nconsole.log('День закрыт, отработано:', closed.duration)\nconsole.log('Длительность перерыва:', closed.timeLeaks)\n```\n\n---\n\n## Справочник эндпоинтов\n\n| Метод | Путь | Bitrix24 метод | Описание |\n|-------|------|---------------|---------|\n| POST | [\u002Fv1\u002Fworkday\u002Fopen](\u002Fdocs\u002Fworkday\u002Fopen) | timeman.open | Открыть или продолжить рабочий день |\n| POST | [\u002Fv1\u002Fworkday\u002Fclose](\u002Fdocs\u002Fworkday\u002Fclose) | timeman.close | Закрыть рабочий день |\n| POST | [\u002Fv1\u002Fworkday\u002Fpause](\u002Fdocs\u002Fworkday\u002Fpause) | timeman.pause | Приостановить рабочий день |\n| GET | [\u002Fv1\u002Fworkday\u002Fstatus](\u002Fdocs\u002Fworkday\u002Fstatus) | timeman.status | Текущий статус рабочего дня |\n| GET | [\u002Fv1\u002Fworkday\u002Fsettings](\u002Fdocs\u002Fworkday\u002Fsettings) | timeman.settings | Настройки учёта на портале |\n| GET | [\u002Fv1\u002Fworkday\u002Fschedule](\u002Fdocs\u002Fworkday\u002Fschedule) | timeman.schedule.get | Сведения о графике работы по `id` |\n\nИнтерактивный переключатель методов с примерами и таблицами полей — [Эндпоинты](\u002Fdocs\u002Fworkday\u002Fendpoints).\n\n---\n\n## Коды ошибок\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | Битрикс24 вернул `INVALID_PARAMS` — нарушена валидация полей запроса |\n| 401 | `MISSING_API_KEY` | Не передан заголовок `X-Api-Key` |\n| 401 | `INVALID_API_KEY` | Неверный API-ключ |\n| 401 | `KEY_EXPIRED` | Срок действия API-ключа истёк |\n| 401 | `TOKEN_MISSING` | Ключу не настроены OAuth-токены для портала |\n| 402 | `ACCOUNT_FROZEN` | Баланс портала заморожен — пополните баланс |\n| 403 | `SCOPE_DENIED` | У ключа нет скоупа `timeman` |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос — текст в `message` (например, попытка закрыть уже закрытый день) |\n| 429 | `RATE_LIMITED` | Превышен лимит запросов к Битрикс24 |\n| 502 | `BITRIX_UNAVAILABLE` | Портал Битрикс24 недоступен |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n---\n\n## Смотрите также\n\n- [Ключи и авторизация](\u002Fdocs\u002Fkeys-auth) — типы ключей, скоупы, формат `session_token`.\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization) — общие ограничения API.\n- [Ошибки](\u002Fdocs\u002Ferrors) — справочник кодов и стратегии обработки.\n","2026-07-07",{}]