Получение стратегии обновления Android-приложения
Описание интерфейса: Получение соответствующей стратегии обновления на основе номера версии клиента
📮Информация о запросе
URL запроса
POST https://api.upgrade.toolsetlink.com/v1/apk/upgrade
Заголовки запроса
| Название параметра | Обязательный | Тип | Пример значения | Описание |
|---|---|---|---|---|
| X-Timestamp | Да | string | 2025-02-17T10:34:55+08:00 | Время запроса в формате RFC3339 |
| X-Nonce | Да | string | fc812cc0b9b51e8c | Уникальная случайная строка (минимум 16 символов) |
| X-AccessKey | Да | string | mui2W50H1j-OC4xD6PgQag | Секретный ключ AccessKey |
| X-Signature | Да | string | 3603437250c2df51fc46426ac79d8995 | Подпись запроса Правила подписи |
| Content-Type | Да | string | application/json |
🔐 Механизм защиты от повторных атак
- Сервер проверяет, что разница между временными метками и временем сервера не превышает ±5 минут
- Сервер проверяет, существует ли уже значение Nonce (чтобы предотвратить повторные запросы)
Тело запроса
json
{
"apkKey": "isVZBUvkFhv6oHxk_X-D0Q",
"versionCode": 1,
"appointVersionCode": 0,
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w",
"patchAlgo": 0
}Описание параметров тела запроса
| Название параметра | Обязательный | Тип | Пример значения | Описание |
|---|---|---|---|---|
| apkKey | Да | string | isVZBUvkFhv6oHxk_X-D0Q | Уникальный идентификатор Android-приложения |
| versionCode | Да | int | 1 | Код версии клиента |
| appointVersionCode | Нет | int | 0 | Ожидаемый код версии обновления, 0 или не переданный означает запрос последней версии |
| devModelKey | Нет | string | stv1 | Уникальный идентификатор модели устройства |
| devKey | Нет | string | LOYlLXNy7w | Уникальный идентификатор устройства (можно использовать MAC как уникальный идентификатор) |
| patchAlgo | Нет | int | 0 | Алгоритм обновления: 0: Полное обновление; 1: Алгоритм HDiffPatch |
📮Информация о ответе
Тело успешного ответа
json
{
"code": 200,
"msg": "Получена новая версия",
"data": {
"apkKey": "isVZBUvkFhv6oHxk_X-D0Q",
"packageName": "com.a.c",
"versionName": "v2",
"versionCode": 2,
"urlPath": "http://file.com/2.apk",
"urlFileSize": 7213,
"urlFileMd5": "36ee2a36b5d20d1008507d253423eea7",
"patchAlgo": 0,
"patchUrlPath": "http://file.com/1-2.patch",
"patchUrlFileSize": 203,
"patchUrlFileMd5": "36ee2a36b5d20d1008507d253423eea7",
"upgradeType": 1,
"promptUpgradeContent": "Содержимое подсказки"
}
}Описание параметров тела ответа
| Название параметра | Тип | Пример значения | Описание |
|---|---|---|---|
| apkKey | string | isVZBUvkFhv6oHxk_X-D0Q | Уникальный идентификатор Android-приложения |
| packageName | string | com.a.c | Имя пакета Android-приложения |
| versionName | string | v1 | Название версии |
| versionCode | int | 1 | Код версии |
| urlPath | string | http://file.com/2.apk | Адрес загрузки файла |
| urlFileSize | int | 7213 | Размер файла (в байтах) |
| urlFileMd5 | string | 36ee2a36b5d20d1008507d253423eea7 | MD5 файла |
| patchAlgo | int | 0 | Алгоритм обновления: 0: Полное обновление; 1: Алгоритм HDiffPatch |
| patchUrlPath | string | http://file.com/1-2.patch | Адрес загрузки файла патча |
| patchUrlFileSize | int | 7213 | Размер файла патча (в байтах) |
| patchUrlFileMd5 | string | 36ee2a36b5d20d1008507d253423eea7 | MD5 файла патча |
| upgradeType | int | 1 | Метод обновления: 1: Обновление с подтверждением; 2: Тихое обновление; 3: Принудительное обновление |
| promptUpgradeContent | string | Prompt content | Содержимое описания обновления с подтверждением |
Типичное тело ответа об ошибке
json
{
"code": 404001,
"msg": "Доступная версия не получена",
"docs": "Соответствующая версия приложения не найдена. Пожалуйста, подтвердите, была ли она правильно создана в системе. Пожалуйста, обратитесь к документации: https://upgrade.toolsetlink.com/ru/upgrade/recommend/apk/app-version.html",
"data": null
}📊Коды состояния
| HTTP-код состояния | code | Описание сценария | Решение |
|---|---|---|---|
| 200 | 0 | Запрос успешен, уже установлена последняя версия | |
| 200 | 200 | Запрос успешен, получена стратегия обновления версии | |
| 400 | 400001 | Недопустимый запрос | |
| 400 | 400002 | Отсутствующие параметры | |
| 400 | 400003 | Недопустимые параметры | |
| 400 | 400004 | Недопустимый заголовок | |
| 400 | 400005 | Недопустимое тело | |
| 401 | 401001 | Неудачная аутентификация | |
| 401 | 401002 | Неудачная проверка подписи | |
| 404 | 404001 | Ресурс не найден | |
| 404 | 404002 | Запись запроса не найдена | |
| 404 | 404003 | Метод обработки не найден | |
| 404 | 404004 | Запрос не найден | |
| 429 | 429001 | Ограничение контроля трафика запроса стратегии задачи приложения | Ограничение контроля трафика для текущей задачи обновления достигнуто, пожалуйста, попробуйте позже. |
| 500 | 500001 | Внутренняя ошибка сервера | Пожалуйста, свяжитесь с нами Связаться с нами |
| 500 | 500002 | Ошибка валидации данных сервера | Пожалуйста, свяжитесь с нами Связаться с нами |