DISCOVERA · API v1

Архив карт для твоего приложения

Список карт, характеристики и скачивание файла для работы без интернета. Доступ выдаётся отдельно каждому приложению и только к выбранным картам.

Скачать OpenAPI для Postman / Swagger · Проверить доступность

Подключение

Адрес API: https://maps-api.mydiscovera.app. Ключ передаётся в заголовке каждого запроса:

Authorization: Bearer ВАШ_КЛЮЧ_ПРИЛОЖЕНИЯ

Администратор выдаёт ключ отдельно. Ключ Discovera Firebase или административный токен здесь не требуется. Не передавайте ключ в адресной строке.

Запросы

Вместо brest-1823 можно использовать постоянный ID из каталога. Для следующих страниц передайте nextCursor как cursor; размер страницы — limit от 1 до 50.

Пример

curl "$DISCOVERA_MAPS_BASE/v1/maps" \
+  -H "Authorization: Bearer $DISCOVERA_MAPS_KEY"

Задайте переменные окружения локально: DISCOVERA_MAPS_BASE=https://maps-api.mydiscovera.app и ключ. Не сохраняйте настоящий ключ в публичном репозитории.

Докачка после обрыва

Сохраните ETag и число записанных байтов. При повторном запросе передайте Range: bytes=N- и If-Range: СОХРАНЁННЫЙ_ETAG.

При ответе 206 допишите данные, проверив начало Content-Range. При 200 файл изменился — начните заново, не дописывайте к старому. Для готового файла проверьте размер. При 412 обновите описание и начните заново. При 416 сначала сверяйте ETag и размер. При 429 ждите Retry-After.

Формат для Android

Брест 1823 отдаётся исходным SQLite-файлом RMMaps. Его можно скачать и читать локально совместимым поставщиком тайлов. Это не PMTiles и не адрес XYZ-тайлов: передавать ссылку скачивания напрямую в MapLibre RasterSource нельзя.

Ключ даёт только чтение разрешённых карт. Встроенный в APK ключ можно извлечь, поэтому он предназначен для распространения этих карт, а не для защиты платного контента. Для каждого нового приложения выдавайте отдельный ключ.

Ошибки

401 — неверный/отозванный ключ; 404 — карта недоступна этому приложению или нет превью; 400 — неверные параметры; 429 — слишком много запросов; 503 — временная ошибка. Ответ содержит error.code и requestId.