{"openapi":"3.1.0","info":{"title":"API de Track Center","version":"1.0.0","description":"Acceso de solo lectura a los vehículos, posiciones, recorridos y eventos de las flotas monitoreadas por Track Center. Todas las fechas están en hora de Argentina (UTC−03:00). Documentación completa: https://api.trackcenter.com.ar/docs","contact":{"name":"Track Center","url":"https://trackcenter.com.ar"}},"servers":[{"url":"https://api.trackcenter.com.ar"}],"security":[{"clave":[]}],"tags":[{"name":"Cuenta","description":"Estado de la clave y catálogos"},{"name":"Vehículos","description":"Flota y clientes"},{"name":"Posiciones","description":"Última posición conocida"},{"name":"Historia","description":"Recorridos y eventos"}],"paths":{"/v1/estado":{"get":{"tags":["Cuenta"],"operationId":"estado","summary":"Estado de la clave y del servicio","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos"],"properties":{"datos":{"$ref":"#/components/schemas/Estado"}}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/catalogo/eventos":{"get":{"tags":["Cuenta"],"operationId":"catalogoEventos","summary":"Tipos de evento posibles","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/TipoEvento"}},"cantidad":{"type":"integer"}}}}}},"401":{"$ref":"#/components/responses/E401"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/clientes":{"get":{"tags":["Vehículos"],"operationId":"clientes","summary":"Clientes que ve esta clave","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/Cliente"}},"cantidad":{"type":"integer"}}}}}},"401":{"$ref":"#/components/responses/E401"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/vehiculos":{"get":{"tags":["Vehículos"],"operationId":"vehiculos","summary":"Vehículos","parameters":[{"name":"cliente","in":"query","description":"Filtrar por cliente (cli_…)","schema":{"type":"string"}},{"name":"vehiculos","in":"query","description":"Filtrar por vehículos: ids separados por coma","schema":{"type":"string","example":"veh_3f9a1c7b2d4e,veh_8c2d0e4f1a7b"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/Vehiculo"}},"cantidad":{"type":"integer"}}},"example":{"datos":[{"id":"veh_3f9a1c7b2d4e","patente":"AB123CD","nombre":"AB123CD","cliente":{"id":"cli_51b0a9e2c4d7","nombre":"Transporte Ejemplo"},"equipo":{"tipo":"gps","modelo":"Track GPS"},"conductor":"Juan Pérez"}],"cantidad":1}}}},"401":{"$ref":"#/components/responses/E401"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/vehiculos/{id}":{"get":{"tags":["Vehículos"],"operationId":"vehiculo","summary":"Un vehículo","parameters":[{"name":"id","in":"path","required":true,"description":"Id del vehículo (veh_…)","schema":{"type":"string","example":"veh_3f9a1c7b2d4e"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos"],"properties":{"datos":{"$ref":"#/components/schemas/Vehiculo"}}},"example":{"datos":{"id":"veh_3f9a1c7b2d4e","patente":"AB123CD","nombre":"AB123CD","cliente":{"id":"cli_51b0a9e2c4d7","nombre":"Transporte Ejemplo"},"equipo":{"tipo":"gps","modelo":"Track GPS"},"conductor":"Juan Pérez"}}}}},"401":{"$ref":"#/components/responses/E401"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/posiciones":{"get":{"tags":["Posiciones"],"operationId":"posiciones","summary":"Última posición de los vehículos","description":"Requiere el permiso `posiciones`. Solo incluye vehículos que informaron alguna posición; `sin_posicion` cuenta los que no.","parameters":[{"name":"cliente","in":"query","description":"Filtrar por cliente (cli_…)","schema":{"type":"string"}},{"name":"vehiculos","in":"query","description":"Filtrar por vehículos: ids separados por coma","schema":{"type":"string","example":"veh_3f9a1c7b2d4e,veh_8c2d0e4f1a7b"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/Posicion"}},"cantidad":{"type":"integer"},"sin_posicion":{"type":"integer"}}},"example":{"datos":[{"vehiculo":"veh_3f9a1c7b2d4e","patente":"AB123CD","fecha":"2026-10-06T15:04:05-03:00","latitud":-33.895214,"longitud":-60.573198,"velocidad_kmh":72,"rumbo":184,"encendido":true,"en_linea":true,"ultima_comunicacion":"2026-10-06T15:04:20-03:00","odometro_km":152340.7,"tension_alimentacion_v":27.6,"temperatura_c":null,"actualizado":"2026-10-06T15:04:31-03:00"}],"cantidad":1,"sin_posicion":0}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/vehiculos/{id}/posicion":{"get":{"tags":["Posiciones"],"operationId":"posicion","summary":"Última posición de un vehículo","description":"Requiere el permiso `posiciones`.","parameters":[{"name":"id","in":"path","required":true,"description":"Id del vehículo (veh_…)","schema":{"type":"string","example":"veh_3f9a1c7b2d4e"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos"],"properties":{"datos":{"$ref":"#/components/schemas/Posicion"}}},"example":{"datos":{"vehiculo":"veh_3f9a1c7b2d4e","patente":"AB123CD","fecha":"2026-10-06T15:04:05-03:00","latitud":-33.895214,"longitud":-60.573198,"velocidad_kmh":72,"rumbo":184,"encendido":true,"en_linea":true,"ultima_comunicacion":"2026-10-06T15:04:20-03:00","odometro_km":152340.7,"tension_alimentacion_v":27.6,"temperatura_c":null,"actualizado":"2026-10-06T15:04:31-03:00"}}}}},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"}}}},"/v1/vehiculos/{id}/recorrido":{"get":{"tags":["Historia"],"operationId":"recorrido","summary":"Recorrido de un vehículo","description":"Requiere el permiso `recorridos`. Hasta 7 días por consulta, dentro de los últimos 90 días. Cuesta 5 unidades del límite por minuto.","parameters":[{"name":"id","in":"path","required":true,"description":"Id del vehículo (veh_…)","schema":{"type":"string","example":"veh_3f9a1c7b2d4e"}},{"name":"desde","in":"query","description":"Inicio del rango (ISO 8601). Sin huso se toma hora de Argentina. Por defecto: 24 h antes de `hasta`.","schema":{"type":"string","example":"2026-10-06T00:00:00-03:00"}},{"name":"hasta","in":"query","description":"Fin del rango (ISO 8601). Por defecto: ahora.","schema":{"type":"string","example":"2026-10-06T23:59:59-03:00"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos"],"properties":{"datos":{"$ref":"#/components/schemas/Recorrido"}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"},"503":{"$ref":"#/components/responses/E503"}}}},"/v1/eventos":{"get":{"tags":["Historia"],"operationId":"eventos","summary":"Eventos de la flota","description":"Requiere el permiso `eventos`. Hasta 7 días por consulta, dentro de los últimos 90 días, y hasta 500 vehículos. Cuesta 5 unidades.","parameters":[{"name":"desde","in":"query","description":"Inicio del rango (ISO 8601). Sin huso se toma hora de Argentina. Por defecto: 24 h antes de `hasta`.","schema":{"type":"string","example":"2026-10-06T00:00:00-03:00"}},{"name":"hasta","in":"query","description":"Fin del rango (ISO 8601). Por defecto: ahora.","schema":{"type":"string","example":"2026-10-06T23:59:59-03:00"}},{"name":"cliente","in":"query","description":"Filtrar por cliente (cli_…)","schema":{"type":"string"}},{"name":"vehiculos","in":"query","description":"Filtrar por vehículos: ids separados por coma","schema":{"type":"string","example":"veh_3f9a1c7b2d4e,veh_8c2d0e4f1a7b"}},{"name":"tipos","in":"query","description":"Solo estos tipos de evento, separados por coma (ver /v1/catalogo/eventos)","schema":{"type":"string","example":"panico,puerta_abierta"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/Evento"}},"cantidad":{"type":"integer"},"desde":{"type":"string"},"hasta":{"type":"string"}}},"example":{"datos":[{"id":"evt_9c1e5a77b02f4d6e8a13","vehiculo":"veh_3f9a1c7b2d4e","patente":"AB123CD","tipo":"panico","categoria":"seguridad","descripcion":"Botón de pánico","fecha":"2026-10-06T03:12:44-03:00","latitud":-34.60372,"longitud":-58.38159,"velocidad_kmh":0}],"cantidad":1,"desde":"2026-10-05T15:00:00-03:00","hasta":"2026-10-06T15:00:00-03:00"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"},"503":{"$ref":"#/components/responses/E503"}}}},"/v1/vehiculos/{id}/eventos":{"get":{"tags":["Historia"],"operationId":"eventosVehiculo","summary":"Eventos de un vehículo","description":"Requiere el permiso `eventos`. Mismas reglas que /v1/eventos.","parameters":[{"name":"id","in":"path","required":true,"description":"Id del vehículo (veh_…)","schema":{"type":"string","example":"veh_3f9a1c7b2d4e"}},{"name":"desde","in":"query","description":"Inicio del rango (ISO 8601). Sin huso se toma hora de Argentina. Por defecto: 24 h antes de `hasta`.","schema":{"type":"string","example":"2026-10-06T00:00:00-03:00"}},{"name":"hasta","in":"query","description":"Fin del rango (ISO 8601). Por defecto: ahora.","schema":{"type":"string","example":"2026-10-06T23:59:59-03:00"}},{"name":"tipos","in":"query","description":"Solo estos tipos de evento, separados por coma (ver /v1/catalogo/eventos)","schema":{"type":"string","example":"panico,puerta_abierta"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["datos","cantidad"],"properties":{"datos":{"type":"array","items":{"$ref":"#/components/schemas/Evento"}},"cantidad":{"type":"integer"},"desde":{"type":"string"},"hasta":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"403":{"$ref":"#/components/responses/E403"},"404":{"$ref":"#/components/responses/E404"},"429":{"$ref":"#/components/responses/E429"},"503":{"$ref":"#/components/responses/E503"}}}}},"components":{"securitySchemes":{"clave":{"type":"http","scheme":"bearer","description":"Clave de acceso entregada por Track Center (tc_live_…)"}},"responses":{"E400":{"description":"Parámetro inválido o rango de fechas fuera de lo permitido","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E401":{"description":"Falta la clave, es inválida, está vencida o fue revocada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E403":{"description":"La clave no tiene permiso, está pausada o la IP no está autorizada","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E404":{"description":"No existe (o no está al alcance de esta clave)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E429":{"description":"Se superó el límite de consultas por minuto. Ver el encabezado Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E503":{"description":"El servicio de posicionamiento no respondió; reintentar más tarde","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["codigo","mensaje"],"properties":{"codigo":{"type":"string","example":"clave_invalida"},"mensaje":{"type":"string","example":"La clave de acceso no es válida."},"solicitud":{"type":"string","description":"Id de la solicitud, para consultas a Track Center"}}}}},"Estado":{"type":"object","properties":{"acceso":{"type":"object","properties":{"nombre":{"type":"string"},"permisos":{"type":"array","items":{"type":"string","enum":["posiciones","recorridos","eventos"]}},"clientes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"nombre":{"type":["string","null"]}}}},"limite_por_minuto":{"type":"integer"},"vence":{"type":["string","null"],"format":"date-time"}}},"servicio":{"type":"object","properties":{"estado":{"type":"string"},"hora":{"type":"string","format":"date-time"}}}}},"Cliente":{"type":"object","properties":{"id":{"type":"string","example":"cli_51b0a9e2c4d7"},"nombre":{"type":["string","null"]},"vehiculos":{"type":"integer"}}},"Vehiculo":{"type":"object","properties":{"id":{"type":"string","example":"veh_3f9a1c7b2d4e"},"patente":{"type":["string","null"],"example":"AB123CD"},"nombre":{"type":["string","null"]},"cliente":{"type":"object","properties":{"id":{"type":"string"},"nombre":{"type":["string","null"]}}},"equipo":{"type":"object","properties":{"tipo":{"type":"string","enum":["gps","camara"]},"modelo":{"type":"string"}}},"conductor":{"type":["string","null"]}}},"Posicion":{"type":"object","properties":{"vehiculo":{"type":"string"},"patente":{"type":["string","null"]},"fecha":{"type":"string","format":"date-time","description":"Hora del GPS"},"latitud":{"type":"number"},"longitud":{"type":"number"},"velocidad_kmh":{"type":["integer","null"]},"rumbo":{"type":["integer","null"],"description":"0–359, desde el norte"},"encendido":{"type":["boolean","null"]},"en_linea":{"type":["boolean","null"]},"ultima_comunicacion":{"type":["string","null"],"format":"date-time"},"odometro_km":{"type":["number","null"]},"tension_alimentacion_v":{"type":["number","null"]},"temperatura_c":{"type":["number","null"]},"actualizado":{"type":"string","format":"date-time","description":"Cuándo Track Center obtuvo este dato"}}},"Punto":{"type":"object","properties":{"fecha":{"type":"string","format":"date-time"},"latitud":{"type":"number"},"longitud":{"type":"number"},"velocidad_kmh":{"type":["integer","null"]},"rumbo":{"type":["integer","null"]},"encendido":{"type":["boolean","null"]},"origen":{"type":["string","null"],"enum":["gps","red_celular","wifi",null]}}},"Recorrido":{"type":"object","properties":{"vehiculo":{"type":"string"},"patente":{"type":["string","null"]},"desde":{"type":"string","format":"date-time"},"hasta":{"type":"string","format":"date-time"},"distancia_km":{"type":"number"},"cantidad_puntos":{"type":"integer"},"puntos":{"type":"array","items":{"$ref":"#/components/schemas/Punto"}}}},"Evento":{"type":"object","properties":{"id":{"type":"string","description":"Estable: el mismo evento siempre tiene el mismo id"},"vehiculo":{"type":"string"},"patente":{"type":["string","null"]},"tipo":{"type":"string","enum":["panico","puerta_abierta","puerta_cerrada","ventanilla_abierta","ventanilla_cerrada","corte_combustible_activado","corte_combustible_desactivado","sabotaje","inhibidor_detectado","inhibidor_finalizado","vibracion","desplazamiento","alarma_activada","alarma_desactivada","alarma_disparada","encendido","apagado","exceso_velocidad","frenada_brusca","aceleracion_brusca","giro_brusco","cambio_carril_brusco","colision","vuelco","conduccion_prolongada","conduccion_nocturna","detencion_prolongada","ralenti","desvio_de_ruta","fatiga","distraccion","uso_celular","fumando","aviso_colision_frontal","salida_de_carril","distancia_insuficiente","peaton_detectado","corte_alimentacion","alimentacion_baja","bateria_baja","equipo_conectado","equipo_reiniciado","sin_conexion","sin_senal_gps","senal_gps_recuperada","cambio_de_chip","geocerca_entrada","geocerca_salida","temperatura_alta","temperatura_baja","temperatura_fuera_de_rango","temperatura_normal","humedad_alta","humedad_baja","posible_robo_combustible","carga_combustible","entrada_activada","entrada_desactivada","identificacion_conductor","falla_vehiculo","mantenimiento","otro"]},"categoria":{"type":"string"},"descripcion":{"type":"string"},"fecha":{"type":"string","format":"date-time"},"latitud":{"type":["number","null"]},"longitud":{"type":["number","null"]},"velocidad_kmh":{"type":["integer","null"]},"entrada":{"type":"integer","description":"Solo en entrada_activada / entrada_desactivada"},"sensor":{"type":["string","null"],"description":"Qué hay conectado a la entrada, si se sabe (enganche_acoplado)"}}},"TipoEvento":{"type":"object","properties":{"tipo":{"type":"string"},"categoria":{"type":"string"},"categoria_nombre":{"type":"string"},"descripcion":{"type":"string"}}}}}}