# Кабинет, календарь и RocketSMS: проверка источников

Дата проверки: **18.10.2026**, часовой пояс Europe/Minsk. Это техническая правовая записка для подготовки запуска. Она не подтверждает юридическую готовность оператора и не заменяет утверждение документов ответственным лицом. Реальных SMS и запросов с реквизитами аккаунта при проверке не выполнялось.

## Подтверждённый протокол RocketSMS

Источник: [официальная PDF-спецификация v1.5.0 от 01.11.2025](https://rocketsms.by/storage/rocketsms_api.pdf), разделы 1–1.8.

- `POST https://api.rocketsms.by/simple/send`; тело `application/x-www-form-urlencoded` (`http_build_query`), не JSON.
- Каждый запрос авторизуется `username` и `password=md5(пароль личного кабинета)`. MD5 используется исключительно для протокола провайдера.
- Поля отправки: `phone` — международный номер без `+`, `text` — UTF-8, `sender` — зарегистрированное имя. В интеграции имя задаётся явно.
- Ответ отправки содержит `id`, `status`, `cost:{credits,money}`; ошибка — `error`, пример `NO_MESSAGE`. Полный перечень ошибок и гарантии HTTP-кодов PDF не публикует.
- `GET /simple/status` с `id` и авторизацией: `{id,status}`; `GET /simple/balance` с авторизацией: `{credits,balance}`; `GET /simple/senders` с авторизацией: массив `{sender,verified,checked,registered}`.
- Согласованное имя должно иметь `checked=true` и `registered=true`. Иначе провайдер может заменить имя.
- Статусы: `QUEUED`, `SENT`, `DELIVERED`, `FAILED`. Получение `id` подтверждает принятие сообщения, а не доставку.
- API **игнорирует** чёрный список и ограничения стран, заданные в кабинете. Отказы проверяются локально перед каждой отправкой.
- `priority=true` предназначен только для кодов/паролей, не для календаря.
- PDF не описывает ключ идемпотентности или поиск сообщения без `id`. Поэтому таймаут/оборванный ответ после передачи запроса — неопределённый результат; повторная отправка автоматически запрещена.

### Противоречие с краткой страницей

[Страница «Разработчикам»](https://rocketsms.by/developers) на дату проверки показывает `/json/send` и пароль без MD5 в примерах. Она также заявляет form-urlencoded, но её PHP-пример передаёт массив непосредственно в cURL. Это отличается от PDF. Выбран отдельный вариант PDF: `/simple/*` плюс MD5; смешивания и автоматического переключения нет. До реальной работы подтвердить этот вариант для конкретного аккаунта в поддержке RocketSMS. Не копировать примеры PHP без исправления синтаксиса и настройки TLS/таймаутов.

### Доступность и альфа-имя

На [главной странице RocketSMS](https://rocketsms.by/) доступны сообщения о восстановлении отправки по Беларуси 15.06.2026 и стабильной работе 22.06.2026. Предшествующее ограничение от 05.06.2026 не следует представлять как подтверждённое текущее состояние. Публичная новость не доказывает доступность конкретной категории у аккаунта магазина. Успех OTP не доказывает доставку календарного напоминания.

Перед включением проверить именно нейтральное информационное сообщение на заранее подтверждённом разрешённом тестовом номере и получить `DELIVERED`. Альфа-имя добавляется через кабинет; ограничения PDF: до 11 символов, латинские буквы, цифры, точка, дефис. Проверить оба признака согласования через `/simple/senders`.

## Персональные данные

Основной источник: [Закон №99-З в ЭТАЛОН-ONLINE](https://etalonline.by/document/?regnum=h12100099). На странице отмечена действующая редакция с 21.03.2026, изменённая Законом №134-З от 16.03.2026.

Статьи 4–5 требуют конкретных целей, соразмерности, ограниченного хранения и доказуемого добровольного согласия. До него отдельно показываются оператор/адрес, цели, данные, срок, уполномоченные лица, действия/способы обработки, права и последствия отказа. Отметка в интернете допустима для согласия на обработку данных, но специальные требования иных актов сохраняются. Избыточные паспортные данные ради такой отметки не собираются.

Статья 7 требует определить условия поручения обработки; статья 9 — проверить страны передачи и соответствующее основание. Статья 10 допускает отзыв в той же форме; прекращение, удаление и уведомление — в течение 15 дней, если нет иных законных оснований. Для SMS локальный запрет применяется немедленно по заданию. Статья 17 требует доступной политики до обработки и организационных/технических мер защиты.

[Официальный канал НЦЗПД о нарушениях интернет-магазинов](https://t.me/s/cpd_by/440) отдельно отмечает незаконность общего согласия на несвязанные цели и рассылки без согласия. [Разъяснение НЦЗПД о договорном основании](https://t.me/s/cpd_by?after=1064) не позволяет подменять договором согласие на рекламу. Страницы `cpd.by` при проверке возвращали 503; использованы первичные публикации официального канала, без утверждения о прочтении недоступных вложений.

### Разделение и черновые формулировки

Это проектные формулировки для отдельного экрана согласий; фактические сведения оператора берутся из настроек Store, а не вписываются заново. В согласие сохраняется полный показанный текст с версией и реквизитами. Никаких заранее выбранных отметок.

- **Календарь:** «Разрешаю хранить и обрабатывать созданные мной события для ведения личного календаря. Это добровольно; отказ не мешает покупкам». В раскрываемой информации: ID аккаунта, созданные поля события и настройки; хранение до удаления события, отзыва согласия или закрытия аккаунта, что наступит раньше. Этот событийный срок является проектным решением для утверждения, а не названным законом универсальным сроком.
- **Напоминания:** «Хочу получать нейтральные SMS-напоминания о моих событиях на мой подтверждённый номер. Для отправки номер и текст передаются RocketSMS; рекламные сообщения не подключаются». Срок — до отключения SMS, отзыва согласия или закрытия аккаунта. Персонализация названия события — отдельный выключенный переключатель.
- **Реклама:** самостоятельная цель, отключена. Разрешение на календарь/напоминания её не включает. Галочку не считать достаточным подтверждением рекламной формы.

Согласие владельца кабинета не является согласием другого взрослого человека. Предложить нейтральные названия/псевдонимы; не собирать чужие телефоны, адреса, сведения о здоровье, религии и другие специальные данные. Для нейтрального SMS не передавать провайдеру имя, дату рождения, примечание или название события.

## Реклама: что не подтверждено

[Официальный перечень МАРТ](https://mart.gov.by/activity/regulirovanie-reklamnoy-deyatelnosti/normativnye-pravovye--akty/) ссылается на [Закон №225-З](https://pravo.by/document/?guid=3871&p0=h10700225). Полный текущий текст статьи 12 не удалось надёжно перечитать: pravo.by вернул 403, повторные запросы ЭТАЛОН — ошибку/таймаут. Дату действующей редакции этого закона здесь не утверждаем.

[НЦЗПД официально сообщил о разъяснениях по рекламной рассылке, согласованных с МАРТ](https://t.me/s/cpd_by?after=850); [страница разъяснений](https://cpd.by/kak-pravilno-obrabatyvat-personalnye-dannye-pri-napravlenii-reklamnoj-rassylki/) и [раздел методологических документов](https://cpd.by/pravovaya-osnova/metodologicheskiye-dokumenty-rekomendatsii/) вернули 503. До проверки актуальной статьи 12, формы текстового документа/подписания и необходимых доказательств рекламное направление должно оставаться заблокированным. Автоматически наделять нейтральное напоминание рекламным статусом или добавлять предложение купить нельзя.

## Условия запуска реальных уведомлений

1. Утвердить оператором цели/основания, отдельные тексты согласий, политику и фактический адрес/контакт для прав субъектов. Уточнить порядок обращений и удаления; протестировать его.
2. Утвердить конкретные сроки доказательств согласий, технических журналов и резервных копий, их основания, очистку и доступ. Не переносить срок события автоматически на обязательные документы и не вводить бессрочное хранение.
3. Проверить договор с RocketSMS и фактическую роль ЧП «ЛНС Решения» (УНП 192855180, указано на сайте), состав данных, субобработчиков, страны, удаление, конфиденциальность и условия поручения. Проверить также хостинг и резервные копии.
4. Подтвердить у провайдера протокол `/simple/*`, информационную категорию, согласованное имя и доставку контролируемого теста. Зафиксировать дату и результат; пароль/OTP/полные номера в журнал не записывать.
5. Разместить секреты вне public, проверить TLS, серверное время Europe/Minsk, запуск планировщика, локальные отказы, отсутствие дублей и отмену очереди при отзыве/смене телефона.
6. После этих действий отдельно включить разрешение реальной отправки. До этого `ROCKETSMS_ENABLED=false`, `ROCKETSMS_DRY_RUN=true` и признак юридической проверки выключен. Календарь работает независимо от внешней SMS-интеграции; автоматические тесты используют подмену провайдера.

Ни доступность API, ни наличие согласий в БД сами по себе не доказывают выполнения всех требований законодательства.

## Дополнение: вход по телефону и одноразовому коду

Основной идентификатор кабинета — подтверждённый номер владельца. Email остаётся необязательным контактом и не используется для автоматического присоединения старых аккаунтов или гостевых заказов. Подтверждение номера не означает согласия на календарь, напоминания либо рекламу.

OTP входа и смены номера выделяются как действия аутентификации по явному запросу человека. В политике отдельно описать телефон, секретный хеш кода, привязку к браузерному сеансу, назначение кода, срок действия, ограничения попыток и технические журналы. Правовое основание этой цели, условия передачи номера RocketSMS и сроки технических записей подлежат утверждению оператором. Код не должен содержать рекламу или данные события. Запрещено выдавать успешную отправку или создавать подтверждённый аккаунт при отключённом провайдере.

Проверка входа допускает только код для того же сеанса и назначения; смена основного номера требует недавнего подтверждения текущего номера и отдельного кода на новый. Проверенный номер нельзя присвоить двум действующим аккаунтам. Удаление кабинета и другие чувствительные действия также требуют недавнего подтверждения; это не заменяется необязательным email.

HTTP-проверки при отключённом RocketSMS используют только закрытые CLI-fixtures собственных временных аккаунтов и файлов сеансов. Они проверяют интерфейс, CSRF, права и обработку ошибок, но **не доказывают реальную доставку OTP**. Никакого обходного HTTP-входа в приложение ради тестов не добавляется. Для рабочего входа остаются обязательными условия подключения и контролируемая проверка авторизационной категории у фактического аккаунта RocketSMS; календарные напоминания дополнительно требуют собственной проверки информационной категории.
