Отчет о событиях
Описание API: Отчет о соответствующем содержимом на основе различных типов событий.
Данные из сообщенных типов событий будут отражены в статистических данных системы.
📮 Информация о запросе
URL запроса
POST https://api.upgrade.toolsetlink.com/v1/app/report
Заголовки запроса
| Название параметра | Обязательный | Тип | Пример значения | Описание |
|---|---|---|---|---|
| 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 (чтобы предотвратить дублирование запросов)
Параметры тела запроса
| Название параметра | Обязательный | Тип | Пример значения | Описание | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| eventType | Да | string | app_start | Тип события: app_start Событие запуска приложения app_upgrade_download Событие загрузки обновления приложения app_upgrade_upgrade Событие обновления приложения | ||||||||||||
| appKey | Да | LOYlLXNy7wV3ySuh0XgtSg | LOYlLXNy7wV3ySuh0XgtSg | Уникальный идентификатор приложения, то же значение, что и urlKey и fileKey | ||||||||||||
| timestamp | Да | string | 2025-02-17T10:34:55+08:00 | Время возникновения события | ||||||||||||
| eventData | Да | Расширенное поле (Тип события app_start Событие запуска приложения) | ||||||||||||||
| - launchTime | Да | string | 2025-02-17T10:34:55+08:00 | Время запуска приложения в формате RFC3339 | ||||||||||||
| - versionCode | Да | int | 10 | Текущий код версии приложения | ||||||||||||
| - devModelKey | Нет | string | stv1 | Уникальный идентификатор модели устройства | ||||||||||||
| - devKey | Нет | string | 89c8b3d5f2a74e1b | Уникальный идентификатор устройства (можно использовать MAC-адрес в качестве уникального идентификатора) | ||||||||||||
| - target | Нет | string | darwin | Система устройства | ||||||||||||
| - arch | Нет | string | x86_64 | Архитектура устройства | ||||||||||||
| eventData | Да | Расширенное поле (Тип события app_upgrade_download Событие загрузки обновления приложения) | ||||||||||||||
| - downloadVersionCode | Да | int | 11 | Версия обновления, возвращаемая стратегией обновления | ||||||||||||
| - code | Да | int | 0 |
| ||||||||||||
| - versionCode | Да | int | 10 | Текущий код версии приложения | ||||||||||||
| - devModelKey | Нет | string | stv1 | Уникальный идентификатор модели устройства | ||||||||||||
| - devKey | Нет | string | 89c8b3d5f2a74e1b | Уникальный идентификатор устройства (можно использовать MAC-адрес в качестве уникального идентификатора) | ||||||||||||
| - target | Нет | string | darwin | Система устройства | ||||||||||||
| - arch | Нет | string | x86_64 | Архитектура устройства | ||||||||||||
| eventData | Да | Расширенное поле (Тип события app_upgrade_upgrade Событие обновления приложения) | ||||||||||||||
| - upgradeVersionCode | Да | int | 11 | Версия обновления, возвращаемая стратегией обновления | ||||||||||||
| - code | Да | int | 0 |
| ||||||||||||
| - versionCode | Да | int | 10 | Текущий код версии приложения | ||||||||||||
| - devModelKey | Нет | string | stv1 | Уникальный идентификатор модели устройства | ||||||||||||
| - devKey | Нет | string | 89c8b3d5f2a74e1b | Уникальный идентификатор устройства (можно использовать MAC-адрес в качестве уникального идентификатора) | ||||||||||||
| - target | Нет | string | darwin | Система устройства | ||||||||||||
| - arch | Нет | string | x86_64 | Архитектура устройства | ||||||||||||
Примеры тела запроса
app_download Событие загрузки приложения (Это событие автоматически записывается при вызове API первой загрузки, не требуется ручной запрос)
json
{
"eventType": "app_download",
"timestamp": "2025-02-17T10:34:55+08:00",
"appKey": "SkEgKQ4SyLmzazl31fJnAw"
}app_start Событие запуска приложения
json
{
"eventType": "app_start",
"timestamp": "2025-02-17T10:34:55+08:00",
"appKey": "SkEgKQ4SyLmzazl31fJnAw",
"eventData": {
"launchTime": "2025-02-17T10:34:55+08:00",
"versionCode": 1,
"target": "darwin",
"arch": "x86_64",
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w"
}
}app_upgrade_get_strategy Событие получения стратегии обновления (Это событие автоматически записывается при вызове API получения последней версии, не требуется ручной запрос)
json
{
"eventType": "app_upgrade_get_strategy",
"timestamp": "2025-02-17T10:34:55+08:00",
"appKey": "SkEgKQ4SyLmzazl31fJnAw",
"eventData": {
"versionCode": 1,
"target": "darwin",
"arch": "x86_64",
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w"
}
}app_upgrade_download Событие загрузки обновления приложения
json
{
"eventType": "app_upgrade_download",
"timestamp": "2025-02-17T10:34:55+08:00",
"appKey": "SkEgKQ4SyLmzazl31fJnAw",
"eventData": {
"downloadVersionCode": 2,
"code": 0,
"versionCode": 1,
"target": "darwin",
"arch": "x86_64",
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w"
}
}app_upgrade_upgrade Событие обновления приложения
json
{
"eventType": "app_upgrade_upgrade",
"timestamp": "2025-02-17T10:34:55+08:00",
"appKey": "SkEgKQ4SyLmzazl31fJnAw",
"eventData": {
"upgradeVersionCode": 2,
"code": 0,
"versionCode": 1,
"target": "darwin",
"arch": "x86_64",
"devModelKey": "stv1",
"devKey": "LOYlLXNy7w"
}
}📮 Информация об ответе
Тело успешного ответа
json
{
"code": 200,
"msg": "Report successful"
}Тип тела ошибочного ответа
json
{
"code": 400002,
"msg": "Parameter missing"
}📊 Статус коды
| HTTP статус код | Код | Описание сценария | Решение |
|---|---|---|---|
| 200 | 0 | Запрос успешен | |
| 400 | 400001 | Недопустимый запрос | |
| 400 | 400002 | Отсутствует параметр | |
| 400 | 400003 | Недопустимый параметр | |
| 400 | 400004 | Недопустимый заголовок | |
| 400 | 400005 | Недопустимое тело | |
| 401 | 401001 | Аутентификация не удалась | |
| 401 | 401002 | Проверка подписи не удалась | |
| 404 | 404001 | Ресурс не найден | |
| 404 | 404002 | Запись не найдена | |
| 404 | 404003 | Метод обработки не найден | |
| 404 | 404004 | Запрос не найден | |
| 500 | 500001 | Внутренняя ошибка сервера | Пожалуйста, свяжитесь с нами Contact Us |
| 500 | 500002 | Проверка внутренних данных сервера не удалась | Пожалуйста, свяжитесь с нами Contact Us |