Módulos · Custom
Consultas independientes de multas, VTV/RTO y deuda para contratos Custom.
API v1AnteriorDisponibilidad
V1 permite ejecutar módulos independientes para contratos Custom. Los módulos documentados son fines, vtv y tax_debt; el contrato habilita cuáles puede solicitar cada cuenta.
Un job activo por patente
Para un mismo owner y entorno, una patente puede tener un solo job queued o processing. Las patentes distintas pueden procesarse a la vez. La regla se comparte entre keys del owner y es independiente de los reportes inteligentes.
| Qué llega | Respuesta | Consumo |
|---|---|---|
| No existe un job activo para esa patente | 202 · job nuevo | Consume 1 unidad por módulo |
| Misma Idempotency-Key + mismo payload | 200 · job original | No suma consumo, aunque ya haya terminado |
| Misma patente activa + mismos módulos | 200 · job activo | No suma consumo |
| Misma patente activa + otros módulos | 409 · module_query_in_progress | No suma consumo; devuelve el job a consultar |
Mismos módulos: reutilizar el job
{
"id": "vmq_0198abc123def456",
"status": "processing",
"plate": "ABC123",
"modules": [
"fines",
"vtv"
],
"createdAt": "2026-08-14T12:00:00.000Z",
"updatedAt": "2026-08-14T12:00:01.000Z",
"completedAt": null,
"meta": {
"reused": true,
"reason": "query_in_progress"
}
}Otros módulos: esperar el job activo
Construí GET /v1/vehicles/modules/:id con active_query.id. El response no incluye una URL de polling.
{
"error_code": "module_query_in_progress",
"message": "Ya existe una consulta activa para esa patente con otros módulos.",
"active_query": {
"id": "vmq_0198abc123def456",
"status": "processing",
"plate": "ABC123",
"modules": [
"fines",
"vtv"
],
"createdAt": "2026-08-14T12:00:00.000Z",
"updatedAt": "2026-08-14T12:00:01.000Z",
"completedAt": null
}
}Idempotencia
Idempotency-Key es un header opcional y recomendado. La misma key con el mismo payload devuelve el job original, incluso si ya terminó. Cambiar el payload con esa key devuelve 409 idempotency_conflict.
La comparación usa la patente normalizada y el conjunto de módulos: cambiar el orden del array no crea una consulta distinta. Después de terminar el job, una request sin la misma key cuenta como una nueva consulta.
Estados y resultados
El job usa queued, processing, completed o failed. Cada módulo puede además finalizar como partial: hay datos utilizables, pero su cobertura se redujo de forma material.
El tiempo de resolución depende de los módulos y organismos consultados. Esperá el webhook o hacé polling sin asumir una duración fija. Un listado vacío con cobertura reducida no confirma ausencia de registros.