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.

Descripció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.

Producción POST  https://cloudapi.hiteknova.com/ClientDataAPI/<method>
Pruebas POST  https://testcloudapi.hiteknova.com/ClientDataAPI/<method>

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.

POST  /ClientDataAPI/RegisteredToken

Parámetros obligatorios

ParámetroTipoDescripción
username obligatoriostringDashboard username
password obligatoriostringDashboard 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.

POST  /ClientDataAPI/getByImei

Parámetros obligatorios

ParámetroTipoDescripción
imei obligatoriostring (min 4)Matches imei_esn OR serial_number

Parámetros opcionales

ParámetroTipoDescripción
fromdatestring (YYYY-MM-DD)Default: 1 year ago
todatestring (YYYY-MM-DD)Default: today (UTC)
fromidintegerCursor — records with id > fromid
limitintegerDefault and max: 100
latestbooleanDefault false. When true, returns only the newest record (LIMIT 1, ORDER BY id DESC).
test_resultstringpassed, failed
erase_resultstringpassed, failed
report_typestringall, erase, triage
os_typestringiOS, Android
model_namestringPartial 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.

POST  /ClientDataAPI/getByImeiBulk

Parámetros obligatorios

ParámetroTipoDescripción
imeis obligatoriostring[] (max 100)Array of IMEIs or serial numbers (length 4–50)

Parámetros opcionales

ParámetroTipoDescripción
latestbooleanDefault true. One newest record per matched IMEI, in request order.
fromdatestring (YYYY-MM-DD)Default: 30 days ago
todatestring (YYYY-MM-DD)Default: today (UTC)
from_idintegerCursor for pagination (use with latest: false)
limitintegerDefault and max: 100
test_resultstringpassed, failed
erase_resultstringpassed, failed
report_typestringall, erase, triage
os_typestringiOS, Android
model_namestringPartial match (LIKE)
Máximo 100 IMEIs por solicitud. Los duplicados se eliminan automáticamente. Los IMEIs deben tener entre 4 y 50 caracteres. Cuando 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.
El campo 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.

POST  /ClientDataAPI/getAllDevices

Parámetros opcionales

ParámetroTipoDescripción
fromdatestringDefault: 1 year ago
todatestringDefault: today (UTC)
fromidintegerCursor — records with id >= fromid
limitintegerDefault and max: 100
report_typestringall, erase, triage
latestbooleanDefault false. When true, returns only the newest record (LIMIT 1, ORDER BY id DESC).
test_resultstringpassed, failed
erase_resultstringpassed, failed
os_typestringiOS, Android
model_namestringPartial 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.

POST  /ClientDataAPI/getByUser

Parámetros obligatorios

ParámetroTipoDescripción
username obligatoriostringOperator username
fromdate obligatoriostringYYYY-MM-DD
todate obligatoriostringYYYY-MM-DD
fromid obligatoriointegerCursor (use 0 to start)
report_type obligatoriostringall, erase, triage

Parámetros opcionales

ParámetroTipoDescripción
data_formatinteger1 = run records through formatData() (same shape as other endpoints). Otherwise raw DB columns are returned.
limitintegerInner per-table limit (default 10000).
test_resultstringpassed, failed
erase_resultstringpassed, failed
os_typestringiOS, Android
model_namestringPartial match (LIKE)
This endpoint queries monthly-partitioned tables via 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).

POST  /ClientDataAPI/getByMachine

Parámetros obligatorios

ParámetroTipoDescripción
machine_sn obligatoriostringTestPod machine serial
fromdate obligatoriostringYYYY-MM-DD
todate obligatoriostringYYYY-MM-DD
fromid obligatoriointegerCursor
report_type obligatoriostringall, erase, triage

Parámetros opcionales

ParámetroTipoDescripción
limitintegerInner per-table limit (default 10000).
test_resultstringpassed, failed
erase_resultstringpassed, failed
os_typestringiOS, Android
model_namestringPartial match (LIKE)
This endpoint queries monthly-partitioned tables via 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*.

POST  /ClientDataAPI/getSku

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.

CampoTipoDescripción
idintegerRecord id (use for cursor pagination)
IMEIstringPrimary IMEI
IMEI2stringSecondary IMEI (dual-SIM)
MEIDstringCDMA MEID
SerialNumberstringDevice serial
ECIDstringApple ECID
ManufacturerstringManufacturer name
ModelNumberstringModel number (SKU code)
ModelNamestringHuman-readable model name
RegulatoryModelstringFCC / regulatory model
RegionstringRegional code
ProductTypestringProduct type
CapacitystringStorage capacity
RAMstringDevice RAM (from process.specs.ram)
ColorstringDevice color
BatteryMaxCapacitystringBattery max capacity (percent)
CycleCountstringBattery cycle count
OSTypestringiOS or Android
OSVersionstringOperating system version
BluetoothAddressstringBluetooth MAC
WifiAddressstringWi-Fi MAC
FMIStatusstringFind My iPhone / activation lock status
FRPStatusstringFactory Reset Protection status
MDMStatusstringMDM status
JailbreakstringJailbreak / root status
GSMABlacklistedstringGSMA blacklist status
SimLockstringSIM lock state
CarrierstringCarrier name
SKUstringCustomer SKU
MachineSNstringTestPod machine serial that processed the device
PortIndexstringTestPod port index
UsernamestringOperator username
LocalTimeCreatedstringLocal time the record was created
UTCTimeCreatedstringUTC creation timestamp
DiagnosticsResultstringDiagnostics app result
ManualGradingstringManual grading result
ErasureStatusstringPassed / Failed
ErasureIDstringErasure certificate ID (sha3-224 hash)
ErasureCertificateURLstringFull URL to the erasure certificate PDF
CommentsstringFree-text comments
CustomFieldstringCustom field
CustomerstringCustomer label
PurchaseOrderstringPO number
BoxNumberstringBox 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"
}
msgDescripción
Data format incorrectEl cuerpo de la solicitud no es JSON válido o falta un parámetro obligatorio.
Username or password incorrectRegisteredToken — invalid credentials
Authorization failedEl 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 requestMá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

Facebook Whats app Configuración de cookies