Cloud API v1
Referencia completa de la API Cloud de HiTekNova — autenticación, consultas de registros de dispositivos, búsqueda individual y masiva por IMEI, mapeo de SKU.
Contenido
Descripción general URL base y autenticación Autenticación — RegisteredToken Búsqueda individual — getByImei Búsqueda masiva — getByImeiBulk Listar dispositivos — getAllDevices Consultar por usuario — getByUser Consultar por máquina — getByMachine Mapeo de SKU — getSku Campos del registro de dispositivo Manejo de errores SoporteDescripción general
La API Cloud expone los datos de procesamiento de dispositivos de HiTekNova mediante HTTPS en formato JSON. Cada endpoint acepta una solicitud POST con cuerpo JSON y devuelve una respuesta JSON. Todos los endpoints de consulta requieren un JWT Bearer obtenido desde RegisteredToken.
URL base y autenticación
Todos los endpoints comparten la misma URL base. Pase su JWT en el encabezado Authorization.
Authorization header
Authorization: Bearer <JWT> Content-Type: application/json
Autenticación — RegisteredToken
Intercambie su usuario y contraseña del panel por un JWT. El token incluye su customer_id, por lo que cada llamada posterior queda automáticamente limitada a su cuenta. Los tokens son de larga duración — cachéelos.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
username obligatorio | string | Dashboard username |
password obligatorio | string | Dashboard password |
Ejemplo — Solicitud
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/RegisteredToken \ -H "Content-Type: application/json" \ -d '{"username":"yourlogin","password":"yourpassword"}'
Respuesta
En caso de éxito, se devuelve el JWT como cadena sin envoltorio JSON. Úselo como Authorization: Bearer <token> en el resto de las llamadas.
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6...
Búsqueda individual — getByImei
Consulte el historial de un único IMEI o número de serie. Coincide con imei_esn o serial_number. Devuelve hasta 100 registros por llamada, paginados mediante fromid.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
imei obligatorio | string (min 4) | Matches imei_esn OR serial_number |
Parámetros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
fromdate | string (YYYY-MM-DD) | Default: 1 year ago |
todate | string (YYYY-MM-DD) | Default: today (UTC) |
fromid | integer | Cursor — records with id > fromid |
limit | integer | Default and max: 100 |
latest | boolean | Default false. When true, returns only the newest record (LIMIT 1, ORDER BY id DESC). |
test_result | string | passed, failed |
erase_result | string | passed, failed |
report_type | string | all, erase, triage |
os_type | string | iOS, Android |
model_name | string | Partial match (LIKE) |
Ejemplo
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getByImei \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{"imei":"356360390499091"}'
Respuesta
{
"status": 1,
"msg": "",
"total": 2,
"has_more": false,
"last_id": 60185,
"data": [ { /* device record */ }, ... ]
}
Todos los endpoints de consulta (getByImei, getByImeiBulk, getAllDevices, getByUser, getByMachine) devuelven registros con la misma estructura. Consulte Campos del registro de dispositivo para la referencia completa.
Búsqueda masiva — getByImeiBulk NEW
Consulte el historial de hasta 100 IMEIs o números de serie en una sola llamada. El indicador latest (por defecto true) devuelve un registro (el más reciente) por cada entrada coincidente en el orden de la solicitud — la ruta más rápida para verificar "¿tengo estos dispositivos?". Use latest: false para obtener el historial completo con paginación por id ASC vía from_id / last_id.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
imeis obligatorio | string[] (max 100) | Array of IMEIs or serial numbers (length 4–50) |
Parámetros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
latest | boolean | Default true. One newest record per matched IMEI, in request order. |
fromdate | string (YYYY-MM-DD) | Default: 30 days ago |
todate | string (YYYY-MM-DD) | Default: today (UTC) |
from_id | integer | Cursor for pagination (use with latest: false) |
limit | integer | Default and max: 100 |
test_result | string | passed, failed |
erase_result | string | passed, failed |
report_type | string | all, erase, triage |
os_type | string | iOS, Android |
model_name | string | Partial match (LIKE) |
latest es true (valor por defecto), los registros se devuelven en el orden del array de entrada. Cuando latest es false, los registros se devuelven por id ASC y la paginación mediante from_id/last_id está activa.RAM se completa desde process.specs.ram cuando está disponible (generalmente para dispositivos Android con especificaciones recolectadas durante las pruebas).Ejemplo — latest (default)
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getByImeiBulk \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{ "imeis": ["356360390499091","356360393577562","358991131387944"] }'
Ejemplo — full history, paged
{
"imeis": ["356360390499091"],
"latest": false,
"fromdate": "2026-01-01",
"limit": 100
}
// next page
{
"imeis": ["356360390499091"],
"latest": false,
"from_id": 60190,
"limit": 100
}
Ejemplo — filters
{
"imeis": ["356360390499091","356360393577562"],
"latest": false,
"erase_result": "passed",
"os_type": "Android",
"model_name": "Galaxy S24",
"fromdate": "2026-01-01",
"todate": "2026-04-15"
}
Respuesta
{
"status": 1,
"msg": "",
"total": 3,
"has_more": false,
"last_id": 60185,
"data": [
{
"id": 60184,
"IMEI": "356360393577562",
"IMEI2": "357332263577567",
"SerialNumber": "R5CXB08H4PJ",
"ModelName": "Galaxy S24 FE",
"Capacity": "256GB",
"RAM": "8GB",
"BatteryMaxCapacity": "98%",
"ErasureStatus": "Passed",
// ... see Device Record Fields below
}
]
}
Listar dispositivos — getAllDevices
Lista los registros de dispositivos del cliente autenticado, filtrados por fecha y tipo de reporte. Devuelve hasta 100 registros, paginados por fromid.
Parámetros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
fromdate | string | Default: 1 year ago |
todate | string | Default: today (UTC) |
fromid | integer | Cursor — records with id >= fromid |
limit | integer | Default and max: 100 |
report_type | string | all, erase, triage |
latest | boolean | Default false. When true, returns only the newest record (LIMIT 1, ORDER BY id DESC). |
test_result | string | passed, failed |
erase_result | string | passed, failed |
os_type | string | iOS, Android |
model_name | string | Partial match (LIKE) |
Ejemplo
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getAllDevices \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{"fromdate":"2026-03-01","todate":"2026-04-15","report_type":"erase"}'
Respuesta
{
"status": 1,
"msg": "",
"total": 100,
"has_more": true,
"last_id": 60110,
"data": [ { /* device record */ }, ... ]
}
Todos los endpoints de consulta (getByImei, getByImeiBulk, getAllDevices, getByUser, getByMachine) devuelven registros con la misma estructura. Consulte Campos del registro de dispositivo para la referencia completa.
Consultar por usuario — getByUser
Lista los registros creados por un operador específico (username). Útil para reportes por técnico.
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
username obligatorio | string | Operator username |
fromdate obligatorio | string | YYYY-MM-DD |
todate obligatorio | string | YYYY-MM-DD |
fromid obligatorio | integer | Cursor (use 0 to start) |
report_type obligatorio | string | all, erase, triage |
Parámetros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
data_format | integer | 1 = run records through formatData() (same shape as other endpoints). Otherwise raw DB columns are returned. |
limit | integer | Inner per-table limit (default 10000). |
test_result | string | passed, failed |
erase_result | string | passed, failed |
os_type | string | iOS, Android |
model_name | string | Partial match (LIKE) |
UNION, so has_more in the response is always false and latest is not supported. Use fromid for cursor paging.Ejemplo
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getByUser \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{ "username":"operator01", "fromdate":"2026-03-01", "todate":"2026-04-15", "fromid":0, "report_type":"all", "data_format":1 }'
Consultar por máquina — getByMachine
Lista los registros procesados en una máquina TestPod específica (machine_sn).
Parámetros obligatorios
| Parámetro | Tipo | Descripción |
|---|---|---|
machine_sn obligatorio | string | TestPod machine serial |
fromdate obligatorio | string | YYYY-MM-DD |
todate obligatorio | string | YYYY-MM-DD |
fromid obligatorio | integer | Cursor |
report_type obligatorio | string | all, erase, triage |
Parámetros opcionales
| Parámetro | Tipo | Descripción |
|---|---|---|
limit | integer | Inner per-table limit (default 10000). |
test_result | string | passed, failed |
erase_result | string | passed, failed |
os_type | string | iOS, Android |
model_name | string | Partial match (LIKE) |
UNION, so has_more in the response is always false and latest is not supported. Use fromid for cursor paging.Ejemplo
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getByMachine \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{ "machine_sn":"TP-001234", "fromdate":"2026-03-01", "todate":"2026-04-15", "fromid":0, "report_type":"all" }'
Mapeo de SKU — getSku
Obtiene la tabla de mapeo de SKU de su cuenta. Devuelve filas sku, sku_1, sku_2 utilizadas para enriquecer las respuestas de getBy*.
Ejemplo
curl -X POST https://cloudapi.hiteknova.com/ClientDataAPI/getSku \ -H "Authorization: Bearer <JWT>" \ -H "Content-Type: application/json" \ -d '{}'
Respuesta
{
"status": 1,
"data": [
{ "sku": "SKU001", "sku_1": "Alias A", "sku_2": "Alias B" }
]
}
Campos del registro de dispositivo
Cada registro devuelto por los endpoints de consulta tiene la siguiente estructura. Los campos pueden estar vacíos cuando el valor no está disponible.
| Campo | Tipo | Descripción |
|---|---|---|
id | integer | Record id (use for cursor pagination) |
IMEI | string | Primary IMEI |
IMEI2 | string | Secondary IMEI (dual-SIM) |
MEID | string | CDMA MEID |
SerialNumber | string | Device serial |
ECID | string | Apple ECID |
Manufacturer | string | Manufacturer name |
ModelNumber | string | Model number (SKU code) |
ModelName | string | Human-readable model name |
RegulatoryModel | string | FCC / regulatory model |
Region | string | Regional code |
ProductType | string | Product type |
Capacity | string | Storage capacity |
RAM | string | Device RAM (from process.specs.ram) |
Color | string | Device color |
BatteryMaxCapacity | string | Battery max capacity (percent) |
CycleCount | string | Battery cycle count |
OSType | string | iOS or Android |
OSVersion | string | Operating system version |
BluetoothAddress | string | Bluetooth MAC |
WifiAddress | string | Wi-Fi MAC |
FMIStatus | string | Find My iPhone / activation lock status |
FRPStatus | string | Factory Reset Protection status |
MDMStatus | string | MDM status |
Jailbreak | string | Jailbreak / root status |
GSMABlacklisted | string | GSMA blacklist status |
SimLock | string | SIM lock state |
Carrier | string | Carrier name |
SKU | string | Customer SKU |
MachineSN | string | TestPod machine serial that processed the device |
PortIndex | string | TestPod port index |
Username | string | Operator username |
LocalTimeCreated | string | Local time the record was created |
UTCTimeCreated | string | UTC creation timestamp |
DiagnosticsResult | string | Diagnostics app result |
ManualGrading | string | Manual grading result |
ErasureStatus | string | Passed / Failed |
ErasureID | string | Erasure certificate ID (sha3-224 hash) |
ErasureCertificateURL | string | Full URL to the erasure certificate PDF |
Comments | string | Free-text comments |
CustomField | string | Custom field |
Customer | string | Customer label |
PurchaseOrder | string | PO number |
BoxNumber | string | Box number |
Manejo de errores
En caso de fallo, los endpoints devuelven status: 0 y un msg legible. En caso de éxito, status: 1.
{
"status": 0,
"msg": "Data format incorrect"
}
msg | Descripción |
|---|---|
Data format incorrect | El cuerpo de la solicitud no es JSON válido o falta un parámetro obligatorio. |
Username or password incorrect | RegisteredToken — invalid credentials |
Authorization failed | El JWT falta, es inválido o ha expirado — llame a RegisteredToken nuevamente. |
Missing or invalid 'imeis' | Ningún IMEI válido enviado a getByImeiBulk tras el filtrado (longitud mínima 4). |
Too many imeis: max 100 per request | Más de 100 IMEIs enviados a getByImeiBulk en una sola llamada. |
No valid imeis provided (min length 4) | Ningún IMEI válido enviado a getByImeiBulk tras el filtrado (longitud mínima 4). |
Soporte
¿Necesita una cuenta, un nuevo token o ayuda con la integración? Contáctenos.
Correo: support@hiteknova.com