Обзор
Запуск одним кликом позволяет вашему продукту встроить планирование проходов, не создавая планировщик. Ваш бэкенд делает несколько REST-вызовов, чтобы создать пользователя и передать границу поля, а затем открывает Launch Pad уже с входом на нужном поле. Редактор маршрутов, хранение планов и экспорт берёт на себя Launch Pad. Готовый план проходов возвращается в ваш продукт.
Запуск одним кликом является вторым из четырёх вариантов партнёрской интеграции, и именно с него начинает большинство партнёров. Разделы ниже описывают, что видят ваши конечные пользователи, что получаете вы как бизнес и как запуск устраняет трение. Раздел Технические детали ниже содержит инженерную спецификацию.
Портал разработчика & справочник по API
Полный справочник REST API, схемы аутентификации и руководства по началу работы с публичным API Launch Pad. Обращайтесь к нему, когда начнёте оценивать более глубокую API-интеграцию, или всякий раз, когда нужны детали на уровне эндпоинтов сверх того, что описано на этой странице.
Перейти на портал разработчикаЧто видят ваши пользователи
При запуске одним кликом Launch Pad выступает как приложение-компаньон вашего продукта. Он открывается в новом окне браузера или в iframe внутри вашего интерфейса, вся настройка выполняется в фоне, и пользователь может сразу приступить к работе.
Нет новой регистрации
Пользователи не создают аккаунт в Launch Pad. Их удостоверение берётся из вашего продукта.
Нет повторного входа
Пользователи входят в систему автоматически при открытии Launch Pad из вашего приложения.
Нет загрузки файлов для начала работы
Нужное поле и его граница уже загружены, когда пользователь попадает в систему. Работа с границами полей — один из главных барьеров при освоении внешних аграрных инструментов; схема «ссылка, вход, загрузка файла» уничтожает большую часть ценности, которую должна давать интеграция.
Обратный путь (поначалу вручную)
Закончив работу, пользователи скачивают файл плана проходов из Launch Pad и загружают его в ваш продукт. Естественная точка для последующей автоматизации через webhook или индивидуальную push-интеграцию с тем же API-клиентом, который вы уже создаёте для запуска.
Что получаете вы как партнёр
Создано для бизнеса и инженерных команд, которые хотят встраивать точную маршрутизацию, не строя инфраструктуру для её поддержки.
Одна административная учётная запись
Единственный администратор — это ваша идентичность внутри Launch Pad. Этот же пользователь хранит API-ключ для вызовов сервер–сервер и может входить в Launch Pad напрямую, чтобы проверять, аудировать или поддерживать клиента.
Консолидированные расчёты
Всё использование собирается под единым партнёрским биллинговым аккаунтом. Конечные пользователи никогда не видят балансы кредитов или счета внутри Launch Pad. Вы — плательщик; цена зависит от объёма и согласовывается индивидуально.
Сводное административное представление по клиентам
Ваш администратор видит использование, планы, границы и активность каждого пользователя по всем подключённым клиентам в одном месте. Это именно та прозрачность, которая нужна для поддержки клиентов и сверки расчётов.
Место запуска одним кликом среди вариантов
Verge предлагает четыре способа добавить Launch Pad в ваш продукт, в порядке возрастания усилий. Запуск одним кликом второй из них, и именно с него начинает большинство партнёров. Сравните все четыре варианта.
-
Вариант 1White Label
Без кода. Ваш логотип, поддомен и биллинг поверх Launch Pad как есть.
-
Вы здесьВариант 2Запуск одним кликом
Несколько вызовов API. Редактор маршрутов Launch Pad выполняет планирование, а план возвращается вам.
-
Вариант 3API-интеграция
Ваш интерфейс, наш движок. Вы сами отображаете и передаёте план.
-
Вариант 4Enterprise
Совместный проект. Launch Pad нативно встроен в вашу FMIS.
Как запуск одним кликом устраняет трение
Зачем нужен запуск одним кликом
Запуск одним кликом отличает интеграцию от простой гиперссылки. С точки зрения пользователя планирование проходов является частью вашего продукта: он нажимает кнопку, выполняет задачу и возвращает результат.
Чтобы это работало, он устраняет два самых трудных момента при внедрении внешнего агроинструмента:
- Настройка учётной записи (регистрация, вход, выбор компании). Ваш бэкенд создаёт пользователя и выполняет вход за кулисами.
- Загрузка границы поля. Ваш бэкенд передаёт границу в Launch Pad через API до открытия окна, поэтому пользователь попадает сразу на нужное поле.
Работа с границами влияет сильнее. Это одно из главных препятствий, когда фермеры внедряют внешние агроинструменты.
Модель аккаунта
Взаимодействие в рамках запуска одним кликом организовано так:
Ваша идентичность в Launch Pad — единственный администратор
Этот пользователь хранит ваш API-ключ, имеет административный доступ ко всем созданным вами организациям клиентов, а также может входить в Launch Pad напрямую для проверки, аудита или поддержки клиента. Конечные пользователи этого пользователя не видят.
Каждый клиент становится отдельной организацией внутри Launch Pad
Наполняется конечными пользователями, которых вы создаёте. Конечный пользователь видит только свою организацию и никогда не видит данные клиентов других партнёров.
Расчёты консолидированы в вашем биллинговом аккаунте
Конечные пользователи никогда не видят балансы кредитов или счета внутри Launch Pad; плательщик — вы.
Сводное административное представление по клиентам
Ваш администратор видит использование по организациям клиентов, количество планов и границ, а также активность каждого пользователя — всё в одном месте. Это именно та прозрачность, которая нужна для поддержки клиентов и сверки расчётов.
Что пользователи видят в Launch Pad
Когда пользователь открывает Launch Pad через партнёрский запуск, некоторые опции Launch Pad неприменимы и скрыты:
- Нет смены пароля, управления email или аккаунтом, нет регистрации. У пользователя нет пароля Launch Pad; вход осуществляется через ваш продукт. На экране смены пароля отображается сообщение «Пароль управляется [Партнёром]» — так же, как Launch Pad уже обрабатывает пользователей, входящих через John Deere, Trimble или CNH.
- Нет переключателя компании. Сессия привязана к единственной организации клиента на время визита.
- Выход заменён на «Вернуться к [Партнёру]», что закрывает вкладку или отправляет пользователя обратно на указанный вами URL, вместо того чтобы оставлять его на странице входа Launch Pad.
Главное рабочее меню (Планы, Планирование проходов, Оборудование, Сравнить) остаётся доступным, поскольку пользователям оно нужно для работы. Скрыты только опции удостоверения, расчётов, администрирования и управления аккаунтом.
Возврат плана проходов
Когда пользователь завершает план проходов в Launch Pad, результат должен вернуться в ваш продукт. Доступны четыре способа, и они работают с любым вариантом интеграции. Push-варианты значительно предпочтительнее опроса (polling).
Скачать и загрузить вручную
Пользователь нажимает «Скачать» в Launch Pad, затем загружает файл в ваш продукт.
Лучше всего когда: это самый быстрый способ начать.
Webhook Push
Launch Pad отправляет каждый готовый план на указанный вами URL, подписанный HMAC.
Лучше всего когда: вам нужна доставка в реальном времени и вы можете разместить универсальный webhook-эндпоинт.
Custom Push
Verge создаёт единоразовую интеграцию, которая доставляет готовые планы непосредственно в ваш существующий API.
Лучше всего когда: у вас есть входящий API, принимающий учётные данные, но вы не хотите создавать приёмник webhook.
Polling Pull
Ваш бэкенд периодически запрашивает готовые планы из API Launch Pad.
Лучше всего когда: ни один push-вариант не применим. Частота запросов должна быть консервативной.
Обязательное условие для ручного скачивания/загрузки: ваш импорт должен принимать хотя бы один формат, который выдаёт Launch Pad (ISOXML, Shapefile, KML или форматы партнёра; подтверждается при оценке объёма). Без такого пересечения запуск одним кликом не обеспечит рабочий сквозной поток.
Технические детали
Нетехнический читатель может остановиться здесь. Остальная часть страницы — это техническая спецификация: сквозной поток, анатомия URL переадресации и механика возврата.
Сквозной поток
Что происходит шаг за шагом, когда пользователь партнёра открывает Launch Pad:
sequenceDiagram
autonumber
participant YU as UI партнёра
participant YB as Бэкенд партнёра
participant LA as Launch Pad API
participant LU as Launch Pad UI
YU->>YB: пользователь нажимает «Открыть план проходов»
note over YB,LA: Шаг 1: создать пользователя LP, если не существует
YB->>LA: POST /api/users (idempotent on externalUserId)
YB->>LA: POST /api/company-accesses (idempotent on user + org)
note over YB,LA: Шаг 2 (опционально): передать границу поля
YB->>LA: POST /api/vBoundary/upsert
note over YB,LA: Шаг 3: запросить код запуска
YB->>LA: POST /api/partner/launch ({ userId, companyId, returnUrl })
LA-->>YB: { code, expiresInSec: 600 }
YB-->>YU: 302 redirect to https://your-app.vergeag.com/launch?code=...
YU->>LU: браузер переходит на /launch?code=...
LU->>LA: POST /api/partner/launch/{code}/exchange
LA-->>LU: JWT + refresh token
note over LU: сохранить JWT в localStorage,
удалить код из URL,
перейти на returnUrl
Ключевые свойства
- Вы аутентифицируетесь сервер–сервер с долгосрочной учётной записью (API-ключ вашего администратора). Браузер никогда не видит API-ключ.
- Браузер видит только короткоживущий одноразовый непрозрачный код в URL (время жизни 10 минут, уничтожается при обмене).
- Эндпоинт обмена не требует входа; сам код является учётной записью. UI Launch Pad вызывает его, как только пользователь попадает на страницу.
- Launch Pad выдаёт обычную пользовательскую сессию (JWT + refresh token), сохраняет её в localStorage и перенаправляет пользователя на указанный вами URL.
Соответствие стандартам
Паттерн — это OAuth 2.0 Authorization Code Grant, где интерактивный экран согласия заменён серверным вызовом авторизации из вашего бэкенда. Современная терминология OAuth называет этот back-channel вариант Pre-Authorized Code Flow (введён в спецификации OpenID for Verifiable Credential Issuance).
Короткоживущий код в URL и back-channel обмен на JWT ведут себя точно так же, как в классическом OAuth; согласие устанавливается партнёрским соглашением, а не диалогом согласия при каждом запуске.
Как выглядит URL переадресации
Что получает браузер пользователя (одна строка в виде заголовка Location:):
https://your-app.vergeag.com/launch?code=lc_R3w9q-Kx7VtNm2bH8sLpYj4eQ6gZc1aXfU0dT5nMoP&returnUrl=%2Fpath-planning%2Fboundary%2Fb3f47e1c-8a02-4d59-9c6e-2f7a8b1d6e09
В расшифрованном для чтения виде:
| Компонент | Значение | Примечания |
|---|---|---|
| Источник | https://your-app.vergeag.com |
Verge предоставляет продакшн-источник при подключении. HTTPS обязателен; обычный HTTP отклоняется. |
| Путь | /launch |
Публичный маршрут без аутентификации. Предварительная сессия Launch Pad не требуется. |
code |
lc_R3w9q-... |
Префикс lc_ обозначает это значение как код запуска (в отличие от API-ключа LP- в логах). Полезная нагрузка — 32 байта криптографически случайных данных, закодированных в base64url. Одноразовый, TTL 10 минут, при выдаче привязан к одному пользователю, одной организации и одному returnUrl. |
returnUrl |
/path-planning/boundary/... |
Относительный путь Launch Pad, на который пользователь отправляется после выдачи JWT. Использует сегменты маршрута (например /path-planning/boundary/:id), чтобы граница загружалась автоматически. Должен начинаться с /. Абсолютные URL, протоколо-относительные URL //host и \ отклоняются при выдаче. |
Что делает UI Launch Pad при переходе
Вы это не реализуете; информация приведена для справки, чтобы вы понимали, что происходит у ваших пользователей между кликом и отображением поля:
- Читает
codeиreturnUrlиз строки запроса. - Обменивает код с Launch Pad на пользовательскую сессию.
- Авторизует пользователя в нужной организации клиента.
- Удаляет код из адресной строки, чтобы он не оставался в истории браузера.
- Перенаправляет пользователя на указанный вами
returnUrl.
Если code отсутствует, истёк или уже использован, пользователь попадает на страницу ошибки с просьбой вернуться в ваш продукт и попробовать снова.
Варианты возврата подробно
Скачать и загрузить вручную
Пользователь нажимает Скачать в Launch Pad, файл попадает на его устройство, и он загружает его в ваш продукт через ваш существующий импорт файлов. Вариант по умолчанию при запуске одним кликом. Никакой новой инфраструктуры с вашей стороны. Требует, чтобы ваш импорт принимал хотя бы один формат, который выдаёт Launch Pad (ISOXML, Shapefile, KML или форматы партнёра).
Webhook Push
Launch Pad отправляет HTTPS POST на указанный вами URL. Каждый запрос содержит подпись HMAC-SHA256, вычисленную по общему секрету, который Verge выдаёт при подключении. Вы проверяете подпись, обрабатываете полезную нагрузку и отвечаете 2xx в течение 10 секунд.
Ключевые свойства
- Вы не аутентифицируетесь в Launch Pad для этого потока. Никакого OAuth-обмена, никакого JWT, никакого API-ключа Launch Pad с вашей стороны. Общий HMAC-секрет — это вся модель аутентификации.
- Один секрет на подписку, с возможностью ротации. Выдаётся один раз при подключении. Ротация использует окно перекрытия двух секретов, чтобы доставки не прерывались при переключении.
- Доставка файла масштабируется с размером полезной нагрузки. Небольшие артефакты (менее 1 МБ) передаются встроенно в base64 внутри тела webhook. Более крупные артефакты передаются как короткоживущий предподписанный URL загрузки, встроенный в тело; вы выполняете GET на этот URL напрямую, без учётных данных Launch Pad.
-
Доставка at-least-once. Launch Pad повторяет попытки с экспоненциальным отступом при ответах не-2xx и таймаутах. Каждое событие содержит заголовок
Verge-Webhook-Idдля дедупликации.
Что вы создаёте
- Публичный HTTPS-эндпоинт, принимающий POST. Никакого входа или сессии не требуется, кроме проверки подписи.
- Проверка HMAC с общим секретом (около десяти строк кода на любом языке).
- Проверка идемпотентности по
Verge-Webhook-Id, чтобы повторная попытка не обрабатывалась дважды. - Быстрый ответ 2xx. Обрабатывайте тяжёлую работу асинхронно, чтобы таймауты не вызывали шторм повторных попыток.
Что обеспечивает Verge
- Исходящий эмиттер и очередь повторных попыток.
- Обработка dead-letter для постоянно неуспешных доставок.
- Административный интерфейс для просмотра журналов доставки и воспроизведения неуспешных событий.
- Опубликованный список диапазонов исходящих IP, которые можно добавить в белый список на брандмауэре.
Custom Push (разработка под конкретного партнёра)
Если у вас уже есть аутентифицированный входящий API, но вы не хотите создавать универсальный приёмник webhook, Verge может написать единоразовую push-интеграцию, которая напрямую вызывает ваш API. Вы передаёте Verge безопасные учётные данные (предпочтительно API-ключ); эмиттер Verge аутентифицируется у вас при каждом push.
Этот вариант существует из-за асимметрии направления доверия. У крупных FMIS-партнёров (John Deere, Trimble, CNH) конечные пользователи входят в Launch Pad с учётной записью OEM, поэтому у Launch Pad уже есть защищённые токены для передачи данных обратно. Launch Pad уже использует эту модель OEM push. При интеграции через запуск одним кликом направление доверия обратное (вы аутентифицируетесь в Launch Pad), поэтому у Launch Pad нет заранее выданных учётных данных для вашей системы. Индивидуальный push закрывает этот разрыв отдельной договорённостью.
Компромиссы
- Специальная разработка со стороны Verge. API каждого партнёра индивидуален. Это работа под конкретного партнёра, а не универсальная функция, и цена отражает это.
- Договорённость с доверенным партнёром. Вы передаёте Verge API-ключ (или эквивалентные безопасные учётные данные) и управляете этими учётными данными со своей стороны.
- Совместное сопровождение. Обе стороны поддерживают работу интеграции при изменениях API и ротации учётных данных.
Подходит, если у вас есть входящий API, вы не хотите создавать универсальный приёмник webhook и готовы финансировать работу под конкретного партнёра.
Polling Pull (использовать экономно; push предпочтительнее)
Если ни один push-вариант не применим, ваш бэкенд может периодически вызывать API Launch Pad (используя тот же X-API-KEY, уже выданный для провизионирования), чтобы получать планы проходов, опубликованные или обновлённые с момента последнего опроса.
Рассматривайте это как пакетное получение с итоговой согласованностью, а не как доставку в реальном времени. Типичная частота — раз в час или реже. Высокочастотный опрос, напоминающий busy-wait в ожидании действия пользователя, не поддерживается и может быть ограничен по частоте. Непрерывный опрос в течение нескольких часов в ожидании единственного пользовательского события — это именно тот шаблон, для которого этот вариант не предназначен.
- Что вы создаёте: цикл опроса с консервативной частотой, дедупликацией по ID плана проходов и импортом в ваше файловое хранилище.
- Компромисс: значительная задержка между действием пользователя и получением данных; дополнительная нагрузка на API Launch Pad.
- Push значительно предпочтительнее. Используйте опрос только когда ни Webhook push, ни Custom push невозможны.
Другие варианты интеграции
Эта страница является полным описанием запуска одним кликом. Если вашему продукту нужно меньше или больше:
White Label (меньше работы)
Ничего не нужно разрабатывать. Ваши клиенты работают напрямую в Launch Pad с вашим логотипом и поддоменом, под вашим сводным биллингом. Подробнее о White Label.
API-интеграция (больше контроля)
Схема публичного API доступна на vergeag.com/developers. Когда запуск одним кликом работает, вы можете расширять интеграцию, напрямую вызывая больше методов API с тем же ключом и отображая планы проходов в собственном интерфейсе. Подробнее об API-интеграции.
Enterprise (полностью индивидуально)
Launch Pad, встроенный в вашу FMIS как родной: ваша дизайн-система, единый вход через OpenID Connect, индивидуальные пути возврата в ваши API. Объём определяется совместно в рамках общего проекта. Подробнее об Enterprise.