Отправка на проверку
Отправляйте интеграцию только после сквозной проверки в developer tenant. У публичного виджета две независимые заявки; у API-интеграции — только карточка.
Перед отправкой
- Постоянный код приложения занят.
- На каждом выбранном языке есть название, описание до установки, политика конфиденциальности и URL или email поддержки.
- Install, revoke и webhook URL доступны по HTTPS и проверены в работе.
required_permissions— минимальный рабочий список.- Именно прикреплённый
widget.zipпрошёл валидацию. - Релиз просмотрен или сохранён локально и проверен во всех объявленных точках.
- Проверены удаление/повторная установка, ошибки и согласие.
- Примечания к релизу объясняют изменения версии.
Официальное руководство amoCRM рекомендует дать воспроизводимый тест-кейс и необходимый тестовый доступ. Соблюдайте ту же дисциплину в Bito: путь модератора должен быть коротким, детерминированным и без production-данных клиентов. Не помещайте долговременные секреты в архив или публичную карточку.
1. Отправьте релиз
Откройте Мои приложения → приложение → Версии, выберите версию и нажмите Отправить на проверку.
POST /admin/settings/widget/release/submit
Authorization: Bearer <Bito session token>
Content-Type: application/json
{ "_id": "<release_id>" }Релиз переходит из редактируемого состояния в queued, затем в testing, когда модератор начинает проверку. В очереди и на тестировании его можно отозвать.
2. Отправьте карточку
В Основной информации сохраните изменения и нажмите Отправить на проверку.
POST /admin/settings/integration/publish
Authorization: Bearer <Bito session token>
Content-Type: application/json
{ "_id": "<integration_id>" }Карточка переходит в pending и блокируется до одобрения, отказа или отзыва. Работа с версиями продолжается, потому что проверки независимы.
Для первого публичного виджета релиз должен получить одобрение модератора до окончательного одобрения карточки. Bito не публикует карточку, указывающую на локально активированный или непроверенный релиз.
Что проверяют модераторы
Проверка следует тем же практическим слоям, что требования к публичным интеграциям и модерация amoCRM, но применяет контракты Bito. Пока релиз в testing, модератор проходит три этапа строго по порядку — следующий открывается только после предыдущего, а для одобрения нужны все три:
| # | Этап | Что проверяется |
|---|---|---|
| 1 | Проверка кода | Валидация архива, ассеты и manifest пройдены; у статического сканера нет блокирующих находок; объявленные точки и права соответствуют тому, что вызывает код. |
| 2 | Проверка карточки | Название, описания и инструкция по настройке есть на каждом объявленном языке; ссылки на политику конфиденциальности и поддержку открываются. |
| 3 | Проверка использования | Релиз устанавливается на тестовый аккаунт: каждая объявленная точка открывается и работает, удаление проходит чисто. |
Первый этап Bito блокирует сам: у релиза, не прошедшего валидацию, с ошибкой извлечения ассетов или с блокирующей находкой сканера, Проверку кода пройти нельзя.
Статический сканер кода
Файлы .js и .html из загруженного архива сканируются построчно, результат показывается модератору рядом с исходным кодом.
| Правило | Уровень | Что находит |
|---|---|---|
eval | Блокирующее | eval(...) — выполнение строки как кода |
new-function | Блокирующее | new Function(...) — сборка кода из строки во время работы |
string-timer | Блокирующее | Передача строки в setTimeout/setInterval |
plain-http | Блокирующее | Обращение по http:// (кроме localhost) |
ip-literal | Блокирующее | Обращение по IP-адресу вместо домена |
remote-import | Блокирующее | import('https://...') — загрузка кода с удалённого адреса |
token-access | На проверку | getAccessToken() — проверьте, куда уходит токен |
storage-access | На проверку | document.cookie, localStorage, sessionStorage |
inner-html | На проверку | .innerHTML = — данные не должны попадать в разметку без экранирования |
post-message-any | На проверку | postMessage(..., '*') |
undeclared-origin | На проверку | Адрес https:///wss://, который вызывает код, но который не объявлен в bito.network.connect_origins |
Одна блокирующая находка закрывает первый этап — исправьте релиз и отправьте заново с новым архивом. Находки «на проверку» не останавливают процесс, но модератор их читает. Сканер ищет строковые шаблоны и не понимает код, поэтому модератор всё равно читает исходники.
Журнал решений
Bito ведёт журнал модерации: у релиза — начало проверки, каждый пройденный этап (с текстом того, что проверено), одобрение и отказ; у карточки — одобрение и отказ. В каждой записи есть имя модератора и время. Журнал только дополняется и не редактируется. Причина отказа показывается вам на релизе или карточке. Когда релиз снова попадает в testing, этапы начинаются с нуля.
Успешная загрузка или сборка не означает одобрения. Это отдельное решение человека, записанное на карточке или релизе.