API-документация
Интеграция NodeCoreX через локальные API (порт 5200) и удалённые API. Удалённые запросы требуют подпись SHA-256 из учётной записи, пароля, кода машины и метки времени.
Локальный API устройства
Базовый URL: http://localhost:5200
http://localhost:5200/nodes/count Получить количество узлов
Получите общее количество рекламных узлов, работающих на текущем устройстве.
{
"success": true,
"count": 4
} {
"success": false,
"message": "Service unavailable"
} http://localhost:5200/nodes/list Получить список индексов узлов
Получить список всех индексов узлов для последующих операций по индексу.
{
"success": true,
"nodeIndexes": [
0,
1,
2,
3
]
} {
"success": false,
"message": "Failed to list nodes"
} http://localhost:5200/nodes/status Получить статус узла
Получите статус работы каждого узла (работает, остановлен, ошибка и т. д.).
{
"success": true,
"statuses": [
{
"index": 0,
"status": "running",
"uptime": 3600
},
{
"index": 1,
"status": "stopped",
"uptime": 0
},
{
"index": 2,
"status": "error",
"message": "Proxy timeout"
}
]
} {
"success": false,
"message": "Unable to read node status"
} http://localhost:5200/nodes/{nodeIndex}/start Запустить узел
Запустить узел воспроизведения рекламы по заданному индексу узла.
-
nodeIndex(path) — Индекс узла (отсчет от 0)
{
"success": true,
"message": "Node started",
"index": 0
} {
"success": false,
"message": "Invalid node index or already running"
} http://localhost:5200/nodes/{nodeIndex}/stop Остановить узел
Остановить узел воспроизведения рекламы для данного индекса узла.
-
nodeIndex(path) — Индекс узла (отсчет от 0)
{
"success": true,
"message": "Node stopped",
"index": 0
} {
"success": false,
"message": "Invalid node index or already stopped"
} http://localhost:5200/nodes/{nodeIndex}/proxy Установить прокси для узла
Настройте прокси-соединение (хост, порт, аутентификацию и т. д.) для данного индекса узла.
-
nodeIndex(path) — Индекс узла -
ip(body) — Конечная точка прокси -
port(body) — Прокси-порт -
username(body) — Имя пользователя прокси (необязательно) -
password(body) — Пароль прокси (необязательно)
{
"ip": "127.0.0.1",
"port": 7890,
"username": null,
"password": null
} {
"success": true,
"message": "Proxy updated",
"index": 0
} {
"success": false,
"message": "Invalid proxy or connection failed"
} http://localhost:5200/device/info Получить информацию об устройстве
Получите базовую информацию об устройстве, такую как машинный код, модель и версия.
{
"success": true,
"machineCode": "PM-XXXX-YYYY",
"model": "Standard",
"version": "1.0.0",
"firmware": "1.2.3"
} {
"success": false,
"message": "Node info unavailable"
} http://localhost:5200/device/health Проверка работоспособности устройства
Проверьте, запущена ли локальная служба; может использоваться для отчетов о пульсе.
{
"success": true,
"healthy": true,
"uptime": 3600,
"nodesActive": 4
} {
"success": false,
"healthy": false,
"message": "Service unhealthy"
} API удалённого сервера
Базовый URL: хост API вашей платформы (см. консоль приложения для эндпоинтов окружения).
/api/device/ads Получить список рекламных задач
Получите сайты-источники объявлений, типы объявлений, идентификаторы объявлений, URL-адреса воспроизведения и связанный контент.
-
sign(query) требуется — Подпись; см. Алгоритм знаков ниже -
machineCode(query) требуется — Код аппаратного устройства -
timestamp(query) требуется — Временная метка запроса (секунды)
{
"success": true,
"data": {
"ads": [
{
"id": "ad-001",
"adType": "Video",
"source": "example.com",
"sourceUrl": "https://example.com/campaign/1",
"playUrl": "https://cdn.example.com/ad-001",
"duration": 30,
"rewardPerView": 0.001
}
]
}
} {
"success": false,
"message": "Invalid sign or expired timestamp",
"code": "AUTH_FAILED"
} /api/device/earnings Получайте доход по узлу или устройству
Получите подробную информацию или сводку о доходах по коду устройства и дополнительному индексу узла.
-
sign(query) требуется — Подпись -
machineCode(query) требуется — Код устройства -
timestamp(query) требуется — Временная метка -
nodeIndex(query) — Индекс узла; опустить для доходов на уровне устройства -
startDate(query) — Дата начала ГГГГ-ММ-ДД -
endDate(query) — Дата окончания ГГГГ-ММ-ДД
{
"success": true,
"data": {
"totalPoints": 1200,
"currency": "points",
"details": [
{
"date": "2025-03-01",
"nodeIndex": 0,
"points": 300,
"adCount": 120
},
{
"date": "2025-03-01",
"nodeIndex": 1,
"points": 280,
"adCount": 115
}
]
}
} {
"success": false,
"message": "Node not found or access denied",
"code": "FORBIDDEN"
} /api/device/heartbeat Пульсация устройства
Периодически сообщайте о онлайн-статусе устройства и статусе работы узла.
-
sign(query) требуется — Подпись -
machineCode(query) требуется — Код устройства -
timestamp(query) требуется — Временная метка
{
"nodeStatuses": [
{
"index": 0,
"status": "running",
"uptime": 3600
},
{
"index": 1,
"status": "running",
"uptime": 3600
},
{
"index": 2,
"status": "stopped",
"uptime": 0
}
],
"deviceHealthy": true
} {
"success": true,
"message": "Heartbeat received",
"nextReportIn": 60
} {
"success": false,
"message": "Invalid sign or machineCode",
"code": "AUTH_FAILED"
} /api/device/config Получить конфигурацию устройства
Получите конфигурацию запуска для устройства (например, интервал выполнения задачи, ограничения по региону).
-
sign(query) требуется — Подпись -
machineCode(query) требуется — Код устройства -
timestamp(query) требуется — Временная метка
{
"success": true,
"data": {
"taskInterval": 30,
"allowedRegions": [
"US",
"GB",
"DE"
],
"maxConcurrentAds": 4,
"reportInterval": 60
}
} {
"success": false,
"message": "Invalid sign or node",
"code": "AUTH_FAILED"
} Алгоритм подписи
Удалённые API-запросы требуют параметры запроса sign, machineCode, и timestamp.
sign = SHA256(account + password + machineCode + timestamp)