{"info":{"_postman_id":"c2d4f3ca-c61f-4bb4-aa7d-a9f4306b126c","name":"API Módulo de Mantenimiento","description":"<html><head></head><body><p>La siguiente API Rest tiene como objetivo brindar una forma fácil de gestionar las mantenciones presentes, pasadas y futuras de sus vehículos registrados en Tranciti.</p>\n<p>Se permite programar mantenciones.</p>\n<p>Se permite registrar mantenciones; programadas, correctivas y de siniestro.</p>\n<p>Se permite obtener metadata necesaria para los llamados a programaciones y registros de mantención.</p>\n<p>Se permite obtener mantenciones actuales e historicas, tal como se muestra en la aplicación web.</p>\n<p>Se permite obtener un historial de registros de mantenciones, tal como sería el reporte de registro de mantenciones desde la aplicación web.</p>\n<p><strong>Todo sigue la misma lógica presente en la aplicación web.</strong></p>\n<p>Resumen de endpoints:</p>\n<ul>\n<li><p><a href=\"https://api.tranciti.com/\">https://api.tranciti.com/</a>mantenimiento/programar-mantencion</p>\n<ul>\n<li><p>Tipo de request: POST</p>\n</li>\n<li><p>Seguridad: Sí</p>\n<ul>\n<li><p>API key (entregada por cliente)</p>\n</li>\n<li><p>id-client ( <code>int</code> del cliente autorizado)</p>\n</li>\n<li><p>Bearer token (usuario solicitante que ve los vehículos en la web de Mantenimiento)</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><a href=\"https://api.tranciti.com/\">https://api.tranciti.com/</a>mantenimiento/registrar-mantencion</p>\n<ul>\n<li><p>Tipo de request: POST</p>\n</li>\n<li><p>Seguridad: Sí</p>\n<ul>\n<li><p>API key (entregada por cliente)</p>\n</li>\n<li><p>id-client ( <code>int</code> del cliente autorizado)</p>\n</li>\n<li><p>Bearer token (usuario solicitante que ve los vehículos en la web de Mantenimiento)</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><a href=\"https://api.tranciti.com/\">https://api.tranciti.com/</a>mantenimiento/metadata</p>\n<ul>\n<li><p>Tipo de request: GET</p>\n</li>\n<li><p>Seguridad: Sí</p>\n<ul>\n<li><p>id-client ( <code>int</code> del cliente autorizado)</p>\n</li>\n<li><p>Bearer token (usuario solicitante que ve los vehículos en la web de Mantenimiento)</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><a href=\"https://api.tranciti.com/\">https://api.tranciti.com/</a>mantenimiento/mantenciones</p>\n<ul>\n<li><p>Tipo de request: GET</p>\n</li>\n<li><p>Seguridad: Sí</p>\n<ul>\n<li><p>id-client ( <code>int</code> del cliente autorizado)</p>\n</li>\n<li><p>Bearer token (usuario solicitante que ve los vehículos en la web de Mantenimiento)</p>\n</li>\n<li><p>API key (entregada por cliente)</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p><a href=\"https://api.tranciti.com/\">https://api.tranciti.com/</a>mantenimiento/registro-mantenciones</p>\n<ul>\n<li><p>Tipo de request: POST</p>\n</li>\n<li><p>Seguridad: Sí</p>\n<ul>\n<li><p>id-client ( <code>int</code> del cliente autorizado)</p>\n</li>\n<li><p>Bearer token (usuario solicitante que ve los vehículos en la web de Mantenimiento)</p>\n</li>\n<li><p>API key (entregada por cliente)</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"50892995","collectionId":"c2d4f3ca-c61f-4bb4-aa7d-a9f4306b126c","publishedId":"2sBXVZpuxN","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-12-26T17:44:46.000Z"},"item":[{"name":"Obtener token de autorización","id":"d80dfcca-c5dd-4bca-927d-3d726b69a961","request":{"method":"GET","header":[],"url":"https://api.waypoint.cl/auth/login?user={{user}}&password={{password}}","description":"<p>Request que permite obtener el token de autorización.</p>\n<p>Se recomienda utilizar el paso de variables en la URL a fin de no revelar información confidencial</p>\n<h2 id=\"respuestas\">Respuestas:</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Código</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Petición procesada correctamente. Se retorna el AccessToken en el body.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Se ha producido un error por falta de parámetros o parámetros incorrectos.</td>\n</tr>\n</tbody>\n</table>\n</div><ul>\n<li><strong>Ejemplo de respuesta código 200:</strong></li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"AccessToken\": \"eyJraWQiOiJEREhzTFdYUURUOGpBYSt4...\"\n}\n\n</code></pre>\n<ul>\n<li><strong>Ejemplo de respuesta código 400 por falta de parámetros o usuario no encontrado:</strong></li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": {}\n}\n\n</code></pre>\n<ul>\n<li><strong>Ejemplo de respuesta código 400 por clave incorrecta:</strong></li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"error\": \"Invalid password for user USER\"\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["auth","login"],"host":["api","waypoint","cl"],"query":[{"key":"user","value":"{{user}}"},{"key":"password","value":"{{password}}"}],"variable":[]}},"response":[{"id":"0ae4d14a-f7cc-4ee0-92fc-4a0e6ca9364c","name":"Obtener token de autorización","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.waypoint.cl/auth/login?user={{user}}&password={{password}}","protocol":"https","host":["api","waypoint","cl"],"path":["auth","login"],"query":[{"key":"user","value":"{{user}}"},{"key":"password","value":"{{password}}"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Fri, 03 Nov 2023 19:13:02 GMT"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"985"},{"key":"Connection","value":"keep-alive"},{"key":"x-amzn-RequestId","value":"ddbdbcbd-846b-4d32-93c8-bbb42da2de44"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Headers","value":"Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token"},{"key":"x-amz-apigw-id","value":"N1fpIG8MyK4EWyA="},{"key":"Access-Control-Allow-Methods","value":"OPTIONS,GET"},{"key":"X-Requested-With","value":"*"},{"key":"X-Amzn-Trace-Id","value":"Root=1-6545463a-43cefda41674e8310dd6646a;Sampled=0;lineage=4d9fa0f3:0"}],"cookie":[],"responseTime":null,"body":"{\n    \"AccessToken\": \"ezyJraWQiOiJ2pRcFNEMVlaV....\"\n}"}],"_postman_id":"d80dfcca-c5dd-4bca-927d-3d726b69a961"},{"name":"Obtener metadata de mantención","id":"c908f8e1-e2e1-47ed-92c8-fc41418a3621","request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"url":"https://api.tranciti.com/mantenimiento/metadata","description":"<p>Este endpoint permite obtener la <strong>metadata necesaria</strong> para operar el módulo de Mantenimiento (misma lógica que la web):</p>\n<ul>\n<li><p>Vehículos (flota)</p>\n</li>\n<li><p>Actividades y tareas</p>\n</li>\n<li><p>Proveedores</p>\n</li>\n<li><p>Responsables</p>\n</li>\n</ul>\n<h2 id=\"datos-de-entrada-headers\">Datos de entrada (headers)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Header</strong></th>\n<th><strong>¿Requerido?</strong></th>\n<th><strong>Tipo</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>x-api-key</code></td>\n<td>Siempre</td>\n<td>String</td>\n<td>API key del cliente.</td>\n</tr>\n<tr>\n<td><code>id-client</code></td>\n<td>Siempre</td>\n<td>Integer (string en header)</td>\n<td>ID del cliente autorizado.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td>Siempre</td>\n<td>String</td>\n<td><code>Bearer</code> del usuario.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"respuestas\">Respuestas</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Código</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Retorna <code>vehiculos</code>, <code>actividades</code>, <code>proveedores</code>, <code>responsables</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>id-client</code> o es inválido.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Falta Authorization o formato incorrecto.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token inválido o usuario no encontrado.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>No se pudo validar sesión legacy (Redis).</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error interno.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"descripción-de-respuesta\">Descripción de respuesta</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Campos dentro de json body</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>vehiculos</td>\n<td>Array de json's que contienen:  <br /><code>idVehiculo</code> -&gt; id del vehículo.  <br /><code>imei</code> -&gt; imei del vehículo.  <br /><code>patente</code> -&gt; patente del vehículo.  <br /><code>descripcion</code> -&gt; descripción del vehículo.  <br /><code>grupo</code> -&gt; grupo al que pertenece el vehículo.</td>\n</tr>\n<tr>\n<td>actividades</td>\n<td>Array de json's que contienen:  <br /><code>actividad</code> -&gt; nombre de actividad.  <br /><code>id</code> -&gt; id de la actividad  <br /><code>tareas</code> -&gt; Array de json's que contiene <code>id</code> de tarea y <code>nombre</code> de tarea.</td>\n</tr>\n<tr>\n<td>proveedores</td>\n<td>Array de json's que contienen:  <br /><code>id</code> -&gt; id de proveedor.  <br /><code>nombre</code> -&gt; nombre de proveedor.</td>\n</tr>\n<tr>\n<td>responsables</td>\n<td>Array de json's que contienen:  <br /><code>id</code> -&gt; id de responsable.  <br /><code>nombre</code> -&gt; nombre de responsable.  <br /><code>correo</code> -&gt; correo de responsable.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["mantenimiento","metadata"],"host":["api","tranciti","com"],"query":[],"variable":[]}},"response":[{"id":"69a5b3fc-92e3-4337-8867-cc8675a002a1","name":"Metadata (OK)","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"},{"key":"","value":"","type":"text","disabled":true}],"url":"https://api.tranciti.com/mantenimiento/metadata"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"vehiculos\": [\n    {\n      \"idVehiculo\": 501562,\n      \"imei\": 123213213,\n      \"patente\": \"ABCD12\",\n      \"descripcion\": \"Camioneta demo 1\",\n      \"grupo\": \"Operaciones\"\n    },\n    {\n      \"idVehiculo\": 565013,\n      \"imei\": 45435,\n      \"patente\": \"WLYM34\",\n      \"descripcion\": \"Camión demo 2\",\n      \"grupo\": \"Operaciones\"\n    }\n  ],\n  \"actividades\": [\n    {\n      \"actividad\": \"cambio de aceite\",\n      \"id\": 101,\n      \"tareas\": [\n        { \"id\": 1001, \"nombre\": \"revisar nivel de aceite\" },\n        { \"id\": 1002, \"nombre\": \"reemplazar filtro\" }\n      ]\n    },\n    {\n      \"actividad\": \"cambio de neumaticos\",\n      \"id\": 12,\n      \"tareas\": []\n    }\n  ],\n  \"proveedores\": [\n    { \"id\": 21, \"nombre\": \"Proveedor Demo\" },\n    { \"id\": 22, \"nombre\": \"Taller Ejemplo\" }\n  ],\n  \"responsables\": [\n    { \"id\": 31, \"nombre\": \"María Pérez\", \"correo\": \"maria.perez@ejemplo.cl\" },\n    { \"id\": 32, \"nombre\": \"Juan Soto\", \"correo\": \"juan.soto@ejemplo.cl\" }\n  ]\n}"}],"_postman_id":"c908f8e1-e2e1-47ed-92c8-fc41418a3621"},{"name":"Obtener mantenciones","id":"04e4ed2c-848d-4249-94a4-805f6b224cb5","request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"url":"https://api.tranciti.com/mantenimiento/mantenciones","description":"<p>Este endpoint permite <strong>obtener la información de mantenciones</strong> del módulo de Mantenimiento, siguiendo <strong>la misma lógica y formato de datos</strong> que la aplicación web.</p>\n<p>Soporta:</p>\n<ul>\n<li><p>Mantenciones <strong>programadas</strong> (estado=1)</p>\n</li>\n<li><p>Mantenciones <strong>próximas</strong> (estado=2)</p>\n</li>\n<li><p>Mantenciones <strong>vencidas</strong> (estado=3)</p>\n</li>\n<li><p>Mantenciones <strong>en proceso</strong> (estado=4)</p>\n</li>\n<li><p>Mantenciones <strong>realizadas</strong> (estado=5)</p>\n</li>\n</ul>\n<h2 id=\"seguridad-headers\">Seguridad (Headers)</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Header</th>\n<th>¿Requerido?</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>x-api-key</code></td>\n<td>Sí</td>\n<td>API key entregada por cliente.</td>\n</tr>\n<tr>\n<td><code>id-client</code></td>\n<td>Sí</td>\n<td>ID del cliente autorizado.</td>\n</tr>\n<tr>\n<td><code>Authorization</code></td>\n<td>Sí</td>\n<td><code>Bearer</code> del usuario.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"query-params\">Query Params</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parámetro</th>\n<th>¿Requerido?</th>\n<th>Formato</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>estado</code></td>\n<td>No</td>\n<td><code>\"1,2,3\"</code></td>\n<td>Estados a retornar. Si se omite o viene vacío, retorna <strong>todos</strong> (1..5).</td>\n</tr>\n<tr>\n<td><code>patente-descripcion</code></td>\n<td>No</td>\n<td>string</td>\n<td>Filtra por patente o descripción (substring, case-insensitive).</td>\n</tr>\n<tr>\n<td><code>fecha-inicio</code></td>\n<td>No*</td>\n<td><code>YYYY-MM-DD</code></td>\n<td><strong>Solo aplica cuando se solicita estado 5 (Realizadas)</strong>.  <br />Filtra aquellas mantenciones cuya fecha de realización sea mayor o igual a este día.  <br />Si viene, se valida que sea el formato YYYY-MM-DD correcto.</td>\n</tr>\n<tr>\n<td><code>fecha-final</code></td>\n<td>No*</td>\n<td><code>YYYY-MM-DD</code></td>\n<td><strong>Solo aplica cuando se solicita estado 5 (Realizadas)</strong>.  <br /><strong>Solo aplica cuando se solicita estado 5 (Realizadas)</strong>.  <br />Filtra aquellas mantenciones cuya fecha de realización sea menor o igual a este día.  <br />Si viene, se valida que sea el formato YYYY-MM-DD correcto.</td>\n</tr>\n</tbody>\n</table>\n</div><p>* Si se solicita <code>estado=5</code> y no se entregan fechas, se aplica un rango por defecto: <strong>desde hace 2 meses hasta hoy</strong> (zona horaria UTC-3). Si <code>fecha-inicio</code> es posterior a <code>fecha-final</code>, se invierten automáticamente.</p>\n<h2 id=\"respuestas\">Respuestas</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Código</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Retorna un JSON con <strong>solo los arreglos solicitados</strong> según <code>estado</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>id-client</code> o es inválido.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Falta <code>Authorization</code> o formato incorrecto.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token inválido o usuario no encontrado.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>No se pudo validar sesión.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error interno o falla al consultar servidores.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"descripción-de-la-respuesta\">Descripción de la respuesta</h2>\n<p>La respuesta es un objeto JSON que puede incluir (según lo solicitado):</p>\n<ul>\n<li><p><code>programadas</code> (estado=1)</p>\n</li>\n<li><p><code>proximas</code> (estado=2)</p>\n</li>\n<li><p><code>vencidas</code> (estado=3)</p>\n</li>\n<li><p><code>en_proceso</code> (estado=4)</p>\n</li>\n<li><p><code>realizadas</code> (estado=5)</p>\n</li>\n</ul>\n<h3 id=\"estructura-de-items-para-programadas--proximas--vencidas\">Estructura de items para <code>programadas</code> / <code>proximas</code> / <code>vencidas</code></h3>\n<blockquote>\n<p>Mismo formato en los 3 arreglos; cambia el valor del campo <code>estado</code> (\"Programada\" / \"Próxima\" / \"Vencida\"). </p>\n</blockquote>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>number</td>\n<td>Es el <strong>id de la programación asociada, parámetro importante para enviar en caso de querer registrar una mantención en el endpoint de /registrar-mantencion.</strong>  <br />Puede ser null en caso de que sea un registro del tipo correctivo o de siniestro, ya que no tienen programación asociada como tal.</td>\n</tr>\n<tr>\n<td><code>estado</code></td>\n<td>string</td>\n<td>Estado de la mantención (Programada/Próxima/Vencida).</td>\n</tr>\n<tr>\n<td><code>ot</code></td>\n<td>string</td>\n<td>Orden de trabajo, es un string de 5 digitos; Ejemplo: \"00012\", \"01234\".</td>\n</tr>\n<tr>\n<td><code>patente</code></td>\n<td>string</td>\n<td>Patente de vehículo.</td>\n</tr>\n<tr>\n<td><code>descripcion</code></td>\n<td>string</td>\n<td>Descripción de vehículo.</td>\n</tr>\n<tr>\n<td><code>responsable</code></td>\n<td>string</td>\n<td>Responsable, persona a cargo registrada.</td>\n</tr>\n<tr>\n<td><code>grupo</code></td>\n<td>string</td>\n<td>Grupo al que pertenece el vehículo.</td>\n</tr>\n<tr>\n<td><code>mantencion</code></td>\n<td>string</td>\n<td>Nombre de la mantención.</td>\n</tr>\n<tr>\n<td><code>alertas</code></td>\n<td>array</td>\n<td>Lista de alertas configuradas: puede incluir <code>\"Odómetro\"</code>, <code>\"Horómetro\"</code>, <code>\"Fecha\"</code> (si alguna no aplica viene como <code>null</code>).</td>\n</tr>\n<tr>\n<td><code>proxima_mantencion_odometro</code></td>\n<td>string</td>\n<td>Próxima mantención de odómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Odómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>proxima_mantencion_horometro</code></td>\n<td>string</td>\n<td>Próxima mantención de horómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Horómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>proxima_mantencion_fecha</code></td>\n<td>string</td>\n<td>Próxima mantención de tipo fecha, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Fecha\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>valor_actual_odometro</code></td>\n<td>string</td>\n<td>Valor actual del odómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Odómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>valor_actual_horometro</code></td>\n<td>string</td>\n<td>Valor actual del horómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Horómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>valor_actual_fecha</code></td>\n<td>string</td>\n<td>Valor actual de la última emisión de GPS, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Fecha\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>faltante_odometro</code></td>\n<td>string</td>\n<td>Lo que falta respecto a la configuración de alerta de odómetro, para la mantención de odómetro. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Odómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>faltante_horometro</code></td>\n<td>string</td>\n<td>Lo que falta respecto a la configuración de alerta de horómetro, para la mantención de horómetro. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Horómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>faltante_fecha</code></td>\n<td>string</td>\n<td>Lo que falta respecto a la configuración de alerta de según fecha, para la mantención según fecha. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Fecha\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>notificacion_odometro</code></td>\n<td>string</td>\n<td>Configuración de notificación que indica cuanto \"antes\" de lo programado se debe notificar la mantención de odómetro. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Odómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>notificacion_horometro</code></td>\n<td>string</td>\n<td>Configuración de notificación que indica cuanto \"antes\" de lo programado se debe notificar la mantención de horómetro. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Horómetro\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>notificacion_fecha</code></td>\n<td>string</td>\n<td>Configuración de notificación que indica cuanto \"antes\" de lo programado se debe notificar la mantención según fecha. El string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Fecha\" en el array de alertas bajo este mismo ítem.</td>\n</tr>\n<tr>\n<td><code>intervalo_odometro</code></td>\n<td>string</td>\n<td>Intervalo configurado para repetir la alerta de odómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Odómetro\" en el array de alertas bajo este mismo ítem.  <br />Solo recurrentes.</td>\n</tr>\n<tr>\n<td><code>intervalo_horometro</code></td>\n<td>string</td>\n<td>Intervalo configurado para repetir la alerta de horómetro, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Horómetro\" en el array de alertas bajo este mismo ítem.  <br />Solo recurrentes.</td>\n</tr>\n<tr>\n<td><code>intervalo_fecha</code></td>\n<td>string</td>\n<td>Intervalo configurado para repetir la alerta según fecha, el string incluye un número y una únidad, idéntico a lo que aparece en la webapp. Puede ser null en caso de que no venga \"Fecha\" en el array de alertas bajo este mismo ítem.  <br />Solo recurrentes.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"estructura-de-items-para-en_proceso\">Estructura de items para <code>en_proceso</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>number</td>\n<td>Es el <strong>id de la programación asociada, parámetro importante para enviar en caso de querer registrar una mantención en el endpoint de /registrar-mantencion.</strong>  <br />Puede ser null en caso de que sea un registro del tipo correctivo o de siniestro, ya que no tienen programación asociada como tal.</td>\n</tr>\n<tr>\n<td><code>estado</code></td>\n<td>string</td>\n<td>Siempre <code>\"En proceso\"</code>.</td>\n</tr>\n<tr>\n<td><code>hes</code></td>\n<td>string</td>\n<td>Nombre registrado en campo HES, referente a la hoja de servicios.</td>\n</tr>\n<tr>\n<td><code>ot</code></td>\n<td>string</td>\n<td>Orden de trabajo, es un string de 5 digitos; Ejemplo: \"00012\", \"01234\".</td>\n</tr>\n<tr>\n<td><code>patente</code></td>\n<td>string</td>\n<td>Patente de vehículo.</td>\n</tr>\n<tr>\n<td><code>descripcion</code></td>\n<td>string</td>\n<td>Descripción de vehículo.</td>\n</tr>\n<tr>\n<td><code>responsable</code></td>\n<td>string</td>\n<td>Responsable, persona a cargo registrada.</td>\n</tr>\n<tr>\n<td><code>grupo</code></td>\n<td>string</td>\n<td>Grupo al que pertenece el vehículo.</td>\n</tr>\n<tr>\n<td><code>mantencion</code></td>\n<td>string</td>\n<td>Nombre de la mantención.</td>\n</tr>\n<tr>\n<td><code>fecha_mantencion</code></td>\n<td>string</td>\n<td>Fecha registrada para realizar la mantención, en caso de tener configurada alerta según fecha, null en caso contrario.</td>\n</tr>\n<tr>\n<td><code>odometro_mantencion</code></td>\n<td>string</td>\n<td>Odómetro registrado para realizar la mantención, en caso de tener configurada alerta según odómetro, null en caso contrario.</td>\n</tr>\n<tr>\n<td><code>horometro_mantencion</code></td>\n<td>string</td>\n<td>Horómetro registrado para realizar la mantención, en caso de tener configurada alerta según horómetro, null en caso contrario.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"estructura-de-items-para-realizadas\">Estructura de items para <code>realizadas</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Campo</th>\n<th>Tipo</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>id</code></td>\n<td>number</td>\n<td>Es el <strong>id de la programación asociada, que ya fue registrada.</strong>  <br />Puede ser null en caso de que sea un registro del tipo correctivo o de siniestro, ya que no tienen programación asociada como tal.</td>\n</tr>\n<tr>\n<td><code>estado</code></td>\n<td>string</td>\n<td>Siempre <code>\"Realizada\"</code>.</td>\n</tr>\n<tr>\n<td><code>hes</code></td>\n<td>string</td>\n<td>Nombre registrado en campo HES, referente a la hoja de servicios.</td>\n</tr>\n<tr>\n<td><code>ot</code></td>\n<td>string</td>\n<td>Orden de trabajo, es un string de 5 digitos; Ejemplo: \"00012\", \"01234\".</td>\n</tr>\n<tr>\n<td><code>patente</code></td>\n<td>string</td>\n<td>Patente de vehículo.</td>\n</tr>\n<tr>\n<td><code>descripcion</code></td>\n<td>string</td>\n<td>Descripción de vehículo.</td>\n</tr>\n<tr>\n<td><code>responsable</code></td>\n<td>string</td>\n<td>Responsable, persona a cargo registrada.</td>\n</tr>\n<tr>\n<td><code>grupo</code></td>\n<td>string</td>\n<td>Grupo al que pertenece el vehículo.</td>\n</tr>\n<tr>\n<td><code>nombre</code></td>\n<td>string</td>\n<td>Nombre de la mantención.</td>\n</tr>\n<tr>\n<td><code>tipo</code></td>\n<td>string</td>\n<td>Puede ser: Programada,Correctiva,Siniestro.</td>\n</tr>\n<tr>\n<td><code>recurrente</code></td>\n<td>string</td>\n<td><code>\"SI\"</code> o <code>\"NO\"</code> según si la programación es recurrente.</td>\n</tr>\n<tr>\n<td><code>fecha</code></td>\n<td>string</td>\n<td>Fecha en la que fué registrada la mantención.</td>\n</tr>\n<tr>\n<td><code>alerta_odometro_intervalo_km</code></td>\n<td>string</td>\n<td>Configuración que tenía la alerta de odómetro, para la mantención ya realizada. String con un número que indica en kilómetros, lo que fué configurado. Idéntico a lo que aparece en la webapp.  <br />Lo importante es el número de la izquierda, que indica los kilómetros.  <br />Ejemplo: 1 (2). -&gt; 1 kilómetro.  <br />Puede ser null si la mantención no incluia alerta de odómetro.</td>\n</tr>\n<tr>\n<td><code>alerta_horometro_intervalo_hr</code></td>\n<td>string</td>\n<td>Configuración que tenía la alerta de horometro, para la mantención ya realizada. String con un número que indica en horas, lo que fué configurado. Idéntico a lo que aparece en la webapp.  <br />Lo importante es el número de la izquierda, que indica las horas.  <br />Ejemplo: 542 (4). -&gt; 542 horas.  <br />Puede ser null si la mantención no incluia alerta de horometro.</td>\n</tr>\n<tr>\n<td><code>alerta_fecha_intervalo</code></td>\n<td>string</td>\n<td>Configuración que tenía la alerta según fecha, para la mantención ya realizada. String con una fecha que indica en <em>dd/mm/yyyy</em>, la configuración de la alerta de fecha.  <br />Idéntico a lo que aparece en la webapp. Ejemplo: 09/01/2026.  <br />Puede ser null si la mantención no incluia alerta de fecha.</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>Todas las fechas entregadas por la api están en dd/mm/yyyy.</strong> </p>\n</blockquote>\n<p>Nota: los valores y formatos de estos campos corresponden al mismo contenido mostrado por la aplicación web del módulo de Mantenimiento. Diferencia es que los campos vacíos o no seteados, vienen en null, a menos que literalmente se hayan seteado como \"-\".</p>\n","urlObject":{"protocol":"https","path":["mantenimiento","mantenciones"],"host":["api","tranciti","com"],"query":[{"disabled":true,"description":{"content":"<p>Fecha inicio (YYYY-MM-DD). Solo se valida y aplica cuando se solicita estado 5 (Realizadas). Si se omite y se pidió estado 5, el backend asume por defecto 'hace 2 meses'.</p>\n","type":"text/plain"},"key":"fecha-inicio","value":"2025-11-06"},{"disabled":true,"description":{"content":"<p>Fecha final (YYYY-MM-DD). Solo se valida y aplica cuando se solicita estado 5 (Realizadas). Si se omite y se pidió estado 5, el backend asume por defecto 'hoy'.</p>\n","type":"text/plain"},"key":"fecha-final","value":"2026-01-06"},{"disabled":true,"description":{"content":"<p>Filtro por patente o descripción (substring, case-insensitive). Se aplica a todos los arreglos devueltos.</p>\n","type":"text/plain"},"key":"patente-descripcion","value":"ABCD12"},{"disabled":true,"description":{"content":"<p>Números, separados por ',', indicando que tipos de mantenciones se quieren obtener.</p>\n","type":"text/plain"},"key":"estado","value":"1,2,3,4,5"}],"variable":[]}},"response":[{"id":"8d0b4b1d-3312-4961-a612-08b216cad937","name":"Mantenciones (OK)","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"},{"key":"x-api-key","value":"{{x-api-key}}","type":"text"}],"url":{"raw":"https://api.tranciti.com/mantenimiento/mantenciones?estado=1,2,3,4,5&patente-descripcion=ABCD12","protocol":"https","host":["api","tranciti","com"],"path":["mantenimiento","mantenciones"],"query":[{"key":"estado","value":"1,2,3,4,5"},{"key":"patente-descripcion","value":"ABCD12"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n  \"programadas\": [\n    {\n      \"id\": 121253,\n      \"estado\": \"Programada\",\n      \"ot\": \"00050\",\n      \"patente\": \"ZJ-4593\",\n      \"descripcion\": \"DEFENDER\",\n      \"responsable\": \"N/D\",\n      \"grupo\": \"Test2\",\n      \"mantencion\": \"test manu 2\",\n      \"alertas\": [\"Odómetro\", \"Horómetro\", \"Fecha\"],\n      \"proxima_mantencion_odometro\": \"10.000 km\",\n      \"proxima_mantencion_horometro\": \"10.000 hrs\",\n      \"proxima_mantencion_fecha\": \"04/09/2025\",\n      \"valor_actual_odometro\": \"208.857 km\",\n      \"valor_actual_horometro\": \"208.851 hrs\",\n      \"valor_actual_fecha\": \"06/01/2026\",\n      \"faltante_odometro\": \"-198.857 km\",\n      \"faltante_horometro\": \"-198.857 hrs\",\n      \"faltante_fecha\": \"-4,1 meses\",\n      \"notificacion_odometro\": \"2 km\",\n      \"notificacion_horometro\": \"1 hrs\",\n      \"notificacion_fecha\": \"42 horas\",\n      \"intervalo_odometro\": \"4 km\",\n      \"intervalo_horometro\": \"5 hrs\",\n      \"intervalo_fecha\": \"32 días\"\n    }\n  ],\n  \"proximas\": [],\n  \"vencidas\": [],\n  \"en_proceso\": [\n    {\n      \"id\": 10,\n      \"estado\": \"En proceso\",\n      \"hes\": \"-\",\n      \"ot\": \"00010\",\n      \"patente\": \"FJDS-33\",\n      \"descripcion\": \"PEDRO\",\n      \"responsable\": \"N/D\",\n      \"grupo\": \"Grupo 4\",\n      \"mantencion\": \"ajsidjaisdnjad\",\n      \"fecha_mantencion\": null,\n      \"odometro_mantencion\": null,\n      \"horometro_mantencion\": \"11.000\"\n    }\n  ],\n  \"realizadas\": [\n    {\n      \"id\": 6542,\n      \"estado\": \"Realizada\",\n      \"hes\": \"ENTRADA TEST\",\n      \"ot\": \"00072\",\n      \"patente\": \"DEMO J\",\n      \"descripcion\": null,\n      \"responsable\": \"N/D\",\n      \"grupo\": \"Test2\",\n      \"nombre\": \"TEST REGISTRO ABARCA\",\n      \"tipo\": \"Programada\",\n      \"recurrente\": \"SI\",\n      \"fecha\": \"17/12/2025\",\n      \"alerta_odometro_intervalo_km\": \"1 (2)\",\n      \"alerta_horometro_intervalo_hr\": \"1 (4)\",\n      \"alerta_fecha_intervalo\": \"06/01/2026\"\n    }\n  ]\n}\n"}],"_postman_id":"04e4ed2c-848d-4249-94a4-805f6b224cb5"},{"name":"Programar nuevas mantenciones","id":"d4eb0b27-61a8-46f6-ba75-ef2500e1e830","request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Esta es una mantención recurrente\",\n                \"recurring\": true,\n                \"description\": \"Mantención cada 10mil kilómetros que avisa 200km antes y luego avisa de nuevo pasado 300 horas\",\n                \"responsibleId\": 999999,\n                \"activitiesIdsList\": [\n                    1234,\n                    5678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"hourmeter\": {\n                    \"interval\": \"10000\",\n                    \"notification\": \"200\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 112233,\n                    \"hourmeter\": 1000\n                },\n                {\n                    \"id\": 445566,\n                    \"hourmeter\": 2000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    888888\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Título post-alerta vencida\",\n                        \"hours\": 300,\n                        \"recipientsIdsList\": [\n                            777777\n                        ]\n                    }\n                ]\n            }\n        },\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención especial\",\n                \"recurring\": false,\n                \"description\": \"Esta es una mantención no-recurrente (normal, de una sola instancia)\",\n                \"responsibleId\": 444444,\n                \"activitiesIdsList\": [\n                    12345678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"odometer\": {\n                    \"interval\": \"10000\",\n                    \"notification\": \"201\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 111222,\n                    \"odometer\": 1000\n                },\n                {\n                    \"id\": 333444,\n                    \"odometer\": 3000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    111111\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion","description":"<p>Este endpoint permite ingresar la información de próximas mantenciones sobre sus vehículos. La información debe cumplir con un formato preciso para ser válida según se detalla en la siguiente tabla y los ejemplos adjuntos.</p>\n<p><em><strong>Se permite crear máximo 5 mantenciones por consulta.</strong></em></p>\n<h2 id=\"datos-de-entrada\">Datos de entrada</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Nombre del campo</strong></th>\n<th><strong>Ubicación en JSON de body</strong></th>\n<th><strong>¿Requerido?</strong></th>\n<th><strong>Tipo de dato</strong></th>\n<th><strong>Descripción / Relación</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>idClient</code></td>\n<td>Raíz del JSON</td>\n<td>Siempre</td>\n<td>Integer</td>\n<td>ID de Cliente. Debe ser un número entero positivo. <strong>Este valor debe ser consultado a su Ejecutivo/a comercial</strong></td>\n</tr>\n<tr>\n<td><code>maintenanceList</code></td>\n<td>Raíz del JSON</td>\n<td>Siempre</td>\n<td>Array de objetos anidados con subobjetos <code>generalInfo</code>, <code>alertConfig</code>, <code>vehicleList</code>y <code>alertEmails</code></td>\n<td>Lista de eventos de mantenimiento. No puede ser un array vacío (máx 5 eventos por request).</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>generalInfo</code></td>\n<td>Dentro de array <code>maintenanceList</code></td>\n<td>Siempre</td>\n<td>Object</td>\n<td>Información general sobre el mantenimiento. Requerido en cada evento.</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Siempre</td>\n<td>String</td>\n<td>Nombre para identificar el mantenimiento. Requerido en cada evento.</td>\n</tr>\n<tr>\n<td><code>recurring</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Siempre</td>\n<td>Boolean</td>\n<td>Indica si el mantenimiento es recurrente en el tiempo. En caso <code>false</code>, se considera un mantenimiento \"normal\" (de única vez). Requerido en cada evento.</td>\n</tr>\n<tr>\n<td><code>isActive</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Opcional</td>\n<td>Boolean</td>\n<td>Si la mantención está activa o no. De no enviarse se considera desactivada (equivalente a enviar <code>false</code>).</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Observaciones o descripción de la mantención.</td>\n</tr>\n<tr>\n<td><code>responsibleId</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>ID del destinatario asignado como responsable que recibirá un correo de aviso.</td>\n</tr>\n<tr>\n<td><code>activitiesIdsList</code></td>\n<td>Dentro de <code>generalInfo</code></td>\n<td>Opcional</td>\n<td>Array de Integer</td>\n<td>Lista de IDs de actividades que ejecutar como parte del mantenimiento.</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>alertConfig</code></td>\n<td>Dentro de array <code>maintenanceList</code></td>\n<td>Siempre</td>\n<td>Object</td>\n<td>Configuración de alertas para el mantenimiento. Requerido en cada evento. Debe proveerse al menos una alerta (odometer, hourmeter, date).</td>\n</tr>\n<tr>\n<td><code>odometer</code></td>\n<td>Dentro de <code>alertConfig</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Object</td>\n<td>Requerido si se desea enviar un alerta de recordatorio por aproximarse al <em>odómetro</em> objetivo.</td>\n</tr>\n<tr>\n<td><code>interval</code></td>\n<td>Dentro de <code>odometer</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Integer</td>\n<td>Cada cuantos kilómetros se vuelve a enviar alerta por próximo mantenimiento. Requerido si <code>recurring</code> es <code>true</code> y alerta tipo <code>odometer</code> es usada.</td>\n</tr>\n<tr>\n<td><code>notification</code></td>\n<td>Dentro de <code>odometer</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Cantidad de kilómetros antes del vencimiento, para enviar notificación preventiva.</td>\n</tr>\n<tr>\n<td><code>hourmeter</code></td>\n<td>Dentro de <code>alertConfig</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Object</td>\n<td>Requerido si se desea enviar un alerta de recordatorio por aproximarse al <em>horómetro</em> objetivo.</td>\n</tr>\n<tr>\n<td><code>interval</code></td>\n<td>Dentro de <code>hourmeter</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Integer</td>\n<td>Cada cuantas horas se vuelve a enviar alerta por próximo mantenimiento. Requerido si <code>recurring</code> es <code>true</code> y alerta tipo <code>hourmeter</code> es usada.</td>\n</tr>\n<tr>\n<td><code>notification</code></td>\n<td>Dentro de <code>alertConfig</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Cantidad de horas antes del vencimiento, para enviar notificación preventiva.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td>Dentro de <code>alertConfig</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Object</td>\n<td>Requerido si se desea enviar un alerta de recordatorio por aproximarse a la <em>fecha</em> objetivo.</td>\n</tr>\n<tr>\n<td><code>autoEstimateNext</code></td>\n<td>Dentro de <code>date</code></td>\n<td>Opcional</td>\n<td>Boolean</td>\n<td>Solo considerado cuando <code>recurring</code> es <code>true</code>. De ser enviado en <code>true</code>, las próximas mantenciones se estimarán en base a un histórico.</td>\n</tr>\n<tr>\n<td><code>interval</code></td>\n<td>Dentro de <code>date</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Integer</td>\n<td>Cada cuantas unidades de tiempo (<code>intervalUnit )</code> se vuelve a enviar alerta por próximo mantenimiento. Requerido en mantenciones recurrentes cuando <code>autoEstimateNext</code> es <code>false</code>.</td>\n</tr>\n<tr>\n<td><code>intervalUnit</code></td>\n<td>Dentro de <code>date</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Unidad para el intervalo de tiempo. Debe ser uno de los siguientes: <em>day</em>, <em>week</em>, <em>month</em> o <em>year</em> . De no enviarse o no ser correcto el valor entregado, se utilizará \"day\".</td>\n</tr>\n<tr>\n<td><code>notification</code></td>\n<td>Dentro de <code>date</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Cuantas unidades de tiempo ( <code>notificationUnit</code> ) antes del vencimiento en el que se envía una notificación para alerta <code>date</code>.</td>\n</tr>\n<tr>\n<td><code>notificationUnit</code></td>\n<td>Dentro de <code>date</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Unidad para el tiempo de la notificación previa. Debe ser uno de los siguientes: <em>hour</em>, <em>day</em>, <em>week</em> o <em>month</em>. De no enviarse o no ser correcto el valor entregado se utilizará \"day\".</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>vehicleList</code></td>\n<td>Dentro de array <code>maintenanceList</code></td>\n<td>Siempre</td>\n<td>Array de objetos</td>\n<td>Listado de vehiculos. No puede ser un array vacío.</td>\n</tr>\n<tr>\n<td><code>id</code></td>\n<td>Dentro de cada objeto de <code>vehicleList</code></td>\n<td>Siempre</td>\n<td>Integer</td>\n<td>ID del Vehículo. Requerido para cada vehículo.</td>\n</tr>\n<tr>\n<td><code>odometer</code></td>\n<td>Dentro de cada objeto de <code>vehicleList</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Integer</td>\n<td>Odómetro de la próxima mantención. Requerido si se envía una alerta tipo <em>odometer</em>.</td>\n</tr>\n<tr>\n<td><code>hourmeter</code></td>\n<td>Dentro de cada objeto de <code>vehicleList</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>Integer</td>\n<td>Horómetro de la próxima mantención. Requerido si se envía una alerta tipo <em>hourmeter</em>.</td>\n</tr>\n<tr>\n<td><code>date</code></td>\n<td>Dentro de cada objeto de <code>vehicleList</code></td>\n<td>Condicionalmente obligatorio</td>\n<td>String (YYYY-MM-DD)</td>\n<td>Fecha de la próxima mantención. Requerido si se envía una alerta tipo <em>date</em>. Debe ser un string de fecha válido.</td>\n</tr>\n<tr>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>alertEmails</code></td>\n<td>Dentro de array <code>maintenanceList</code></td>\n<td>Siempre</td>\n<td>Object</td>\n<td>Configuración de correos electrónicos para alertas. Requerido en cada evento.</td>\n</tr>\n<tr>\n<td><code>responsibleIdsList</code></td>\n<td>Dentro de array <code>alertEmails</code></td>\n<td>Siempre</td>\n<td>Array de Integer</td>\n<td>Listado de IDs de los correos electrónicos responsables. No puede ser un array vacío.</td>\n</tr>\n<tr>\n<td><code>postExpirationList</code></td>\n<td>Dentro de array <code>alertEmails</code></td>\n<td>Opcional</td>\n<td>Array de objetos</td>\n<td>Listado de alertas que se envían luego de que expire la mantención.</td>\n</tr>\n<tr>\n<td><code>recipientsIdsList</code></td>\n<td>Dentro de cada objeto de <code>postExpirationList</code></td>\n<td>Opcional</td>\n<td>Array de Integer</td>\n<td>Listado de IDs de destinatarios de correo para la alerta luego de que expire la mantención.</td>\n</tr>\n<tr>\n<td><code>hours</code></td>\n<td>Dentro de cada objeto de <code>postExpirationList</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Horas después de la expiración de la mantención para enviar la alerta.</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>Dentro de cada objeto de <code>postExpirationList</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Descripción/título para la alerta luego de que expire la mantención.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"respuestas\">Respuestas</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Código</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>La solicitud fue exitosa. En el body de la respuesta se encuentra el listado de mantenciones ingresadas exitosamente y de errores si es que se produjeron (y en cuales mantenciones hay problemas con los datos ingresados).</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta parámetro idClient o es inválido (por ejemplo, no es número).</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Faltan datos para programar mantención (por ejemplo, maintenanceList es un array vacío o no es un array).</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Se permiten un máximo de 5 mantenimientos a la vez.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Se encontraron problemas en los datos de entrada. Se incluye un listado <em>warnings</em> con los problemas encontrados en datos obligatorios o en formato. No se hicieron inserciones.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>No se envió la cabecera Authorization con el token o el token está incorrecto (por ejemplo, no cumple con el formato esperado).</td>\n</tr>\n<tr>\n<td>401</td>\n<td>El token entregado no pudo ser usado para verificar el usuario (por ejemplo, no fue enviado en su totalidad, está vencido o fue modificado).</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Las inserciones presentaron problemas con los datos ingresados.</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error interno.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["mantenimiento","programar-mantencion"],"host":["api","tranciti","com"],"query":[],"variable":[]}},"response":[{"id":"d320f3d7-cf96-43c5-8c3b-3de0a747f0e4","name":"Mantención con Alerta de Odómetro","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"{{vault:bearer-token}}q5VeqPmnoIvn31n9NbqvPAeVxSAg2mKDiw9wW49EEemoxcgw","type":"text"},{"key":"id-client","value":"12345678","type":"text"},{"key":"x-api-key","value":"ppbGkuNSapiKeyGYUB78321A7Cip8iWFkgexampleIOS8","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención recurrente 10k\",\n                \"recurring\": true,\n                \"description\": \"Mantención recurrente cada 10mil kilómetros que avisa 200km antes y luego avisa de nuevo pasado 300 horas\",\n                \"responsibleId\": 999999,\n                \"activitiesIdsList\": [\n                    1234,\n                    5678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"odometer\": {\n                    \"interval\": \"10000\",\n                    \"notification\": \"200\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 112233,\n                    \"odometer\": 1000\n                },\n                {\n                    \"id\": 445566,\n                    \"odometer\": 2000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    888888\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Título post-alerta vencida\",\n                        \"hours\": 300,\n                        \"recipientsIdsList\": [\n                            777777\n                        ]\n                    }\n                ]\n            }\n        },\n        {\n            \"generalInfo\": {\n                \"name\": \"Revisión única 15.000 km\",\n                \"recurring\": false,\n                \"description\": \"Esta es una mantención no-recurrente (normal, de una sola instancia) cuando el vehículo cumple 15 mil kilómetros y avisa 100km antes\",\n                \"responsibleId\": 444444,\n                \"activitiesIdsList\": [\n                    12345678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"odometer\": {\n                    \"interval\": \"15000\",\n                    \"notification\": \"100\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 111222,\n                    \"odometer\": 1000\n                },\n                {\n                    \"id\": 333444,\n                    \"odometer\": 3000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    111111\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Mantenimientos programados correctamente: 2 - con error: 0\",\n    \"okIds\": [\n        {\n            \"index\": 1,\n            \"message\": 8165\n        },\n        {\n            \"index\": 2,\n            \"message\": 8166\n        }\n    ],\n    \"errors\": []\n}"},{"id":"3dc128e4-85d3-4009-97c1-2c57cf15d1d1","name":"Mantención con Alerta de Horómetro","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención recurrente 5000 horas\",\n                \"recurring\": true,\n                \"description\": \"Mantención cada 5 mil horas de uso, que avisa 1000 horas antes y luego avisa de nuevo pasado 100 horas\",\n                \"responsibleId\": 999999,\n                \"activitiesIdsList\": [\n                    1234,\n                    5678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"hourmeter\": {\n                    \"interval\": \"5000\",\n                    \"notification\": \"1000\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 112233,\n                    \"hourmeter\": 1000\n                },\n                {\n                    \"id\": 445566,\n                    \"hourmeter\": 2000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    888888\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Título post-alerta vencida\",\n                        \"hours\": 100,\n                        \"recipientsIdsList\": [\n                            777777\n                        ]\n                    }\n                ]\n            }\n        },\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención única 50 mil horas\",\n                \"recurring\": false,\n                \"description\": \"Esta es una mantención no-recurrente (normal, de una sola instancia) que se realiza cuando el vehículo cumple 50 mil horas de uso y se avisa 200 horas antes\",\n                \"responsibleId\": 444444,\n                \"activitiesIdsList\": [\n                    12345678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"hourmeter\": {\n                    \"interval\": \"50000\",\n                    \"notification\": \"200\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 111222,\n                    \"hourmeter\": 1000\n                },\n                {\n                    \"id\": 333444,\n                    \"hourmeter\": 3000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    111111\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Mantenimientos programados correctamente: 2 - con error: 0\",\n    \"okIds\": [\n        {\n            \"index\": 1,\n            \"message\": 8165\n        },\n        {\n            \"index\": 2,\n            \"message\": 8166\n        }\n    ],\n    \"errors\": []\n}"},{"id":"4a855ada-202a-43e9-afdb-b646731ff992","name":"Mantención con Alerta por Fecha","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención trimestral\",\n                \"recurring\": true,\n                \"description\": \"Mantención cada 3 meses. Avisa 2 semanas antes\",\n                \"responsibleId\": 999999,\n                \"activitiesIdsList\": [\n                    1234,\n                    5678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"date\": {\n                    \"autoEstimateNext\": false,\n                    \"interval\": 3,\n                    \"intervalUnit\": \"month\",\n                    \"notification\": 2,\n                    \"notificationUnit\": \"week\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 112233,\n                    \"date\": \"2026-02-03 00:00:00-03:00\"\n                },\n                {\n                    \"id\": 445566,\n                    \"date\": \"2026-02-03 00:00:00-03:00\"\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    888888\n                ]\n            }\n        },\n        {\n            \"generalInfo\": {\n                \"name\": \"Mantención fin de año\",\n                \"recurring\": false,\n                \"description\": \"Esta es una mantención no-recurrente (normal, de una sola instancia). Se ejecuta preventivamente cerca del día de Navidad. Avisa a inicio de diciembre\",\n                \"responsibleId\": 444444,\n                \"activitiesIdsList\": [\n                    12345678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"date\": {\n                    \"autoEstimateNext\": false,\n                    \"notification\": 3,\n                    \"notificationUnit\": \"week\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 111222,\n                    \"date\": \"2026-12-22\"\n                },\n                {\n                    \"id\": 333444,\n                    \"date\": \"2026-12-22\"\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    111111\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Título post-alerta vencida\",\n                        \"hours\": 300,\n                        \"recipientsIdsList\": [\n                            777777\n                        ]\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Mantenimientos programados correctamente: 2 - con error: 0\",\n    \"okIds\": [\n        {\n            \"index\": 1,\n            \"message\": 8165\n        },\n        {\n            \"index\": 2,\n            \"message\": 8166\n        }\n    ],\n    \"errors\": []\n}"},{"id":"2d008c49-2d99-4092-801f-ebc948274a1a","name":"Mantención recurrente con todo tipo de Alerta","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Múltimantenimiento estándar\",\n                \"recurring\": true,\n                \"description\": \"Esta es una serie de mantenciones con muchas condiciones: cada 10mil km, 20mil horas y cada 365 días\",\n                \"responsibleId\": 555,\n                \"activitiesIdsList\": [\n                    888,\n                    999,\n                    1010\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"odometer\": {\n                    \"interval\": 10000,\n                    \"notification\": 1000\n                },\n                \"hourmeter\": {\n                    \"interval\": 20000,\n                    \"notification\": 2000\n                },\n                \"date\": {\n                    \"autoEstimateNext\": false,\n                    \"interval\": 365,\n                    \"intervalUnit\": \"day\",\n                    \"notification\": 24,\n                    \"notificationUnit\": \"hour\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 111111,\n                    \"odometer\": \"10000\",\n                    \"hourmeter\": \"500\",\n                    \"date\": \"2025-12-31\"\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    6,\n                    7\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Alerta luego de una hora de expirar\",\n                        \"hours\": 1,\n                        \"recipientsIdsList\": [\n                            10,\n                            11,\n                            12,\n                            13\n                        ]\n                    },\n                    {\n                        \"title\": \"Alerta luego de un día de expirar\",\n                        \"hours\": 24,\n                        \"recipientsIdsList\": [\n                            14,\n                            15,\n                            16,\n                            17\n                        ]\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Mantenimientos programados correctamente: 1 - con error: 0\",\n    \"okIds\": [\n        {\n            \"index\": 1,\n            \"message\": 8165\n        }\n    ],\n    \"errors\": []\n}"},{"id":"e6642d3b-1115-4c15-acb9-7c074870258e","name":"Mantenciones recurrente con fecha automática","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"idClient\": 1040,\n    \"maintenanceList\": [\n        {\n            \"generalInfo\": {\n                \"name\": \"Esta es una mantención recurrente y predictiva\",\n                \"recurring\": true,\n                \"description\": \"Mantención que no require fecha, pues predice la siguiente según la historia pasada.\",\n                \"responsibleId\": 999999,\n                \"activitiesIdsList\": [\n                    1234,\n                    5678\n                ],\n                \"isActive\": true\n            },\n            \"alertConfig\": {\n                \"date\": {\n                    \"autoEstimateNext\": true,\n                    \"notification\": 1,\n                    \"notificationUnit\": \"hour\"\n                }\n            },\n            \"vehicleList\": [\n                {\n                    \"id\": 112233,\n                    \"hourmeter\": 1000\n                },\n                {\n                    \"id\": 445566,\n                    \"hourmeter\": 2000\n                }\n            ],\n            \"alertEmails\": {\n                \"responsibleIdsList\": [\n                    888888\n                ],\n                \"postExpirationList\": [\n                    {\n                        \"title\": \"Título post-alerta vencida\",\n                        \"hours\": 300,\n                        \"recipientsIdsList\": [\n                            777777\n                        ]\n                    }\n                ]\n            }\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/programar-mantencion"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Mantenimientos programados correctamente: 1 - con error: 0\",\n    \"okIds\": [\n        {\n            \"index\": 1,\n            \"message\": 8165\n        }\n    ],\n    \"errors\": []\n}"}],"_postman_id":"d4eb0b27-61a8-46f6-ba75-ef2500e1e830"},{"name":"Registrar mantención","id":"e0549cee-ec28-472f-90ea-90c50522e0c1","request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"x-api-key","value":"{{x-api-key}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"idClient\": 1040,\n  \"cerrar\": true,\n  \"registro\": {\n    \"tipoMantencionId\": 3,\n    \"nombre\": \"tipo32\",\n    \"vehiculoId\": 17208,\n    \"patente\": \"3_Historico\",\n    \"responsableId\": 2364,\n    \"proveedorId\": 329,\n    \"hes\": \"6767\",\n    \"encargadoIngreso\": \"encsin2\",\n    \"fechaIngreso\": \"2025-12-17T00:00:00-03:00\",\n    \"fechaInicioTrabajo\": \"2025-12-29T00:00:00-03:00\",\n    \"fechaSalida\": \"2026-01-01T19:00:00-03:00\",\n    \"fechaTerminoTrabajo\": \"2025-12-29T00:00:00-03:00\",\n    \"odometro\": 449,\n    \"horometro\": 334,\n    \"valor\": 1232,\n    \"observaciones\": \"aaa2\",\n    \"patenteReemplazo\": \"gjkgf2\",\n    \"valorReemplazo\": 123,\n    \"fechaInicioReemplazo\": \"2025-12-03T00:00:00-03:00\",\n    \"fechaFinReemplazo\": \"2025-12-10T00:00:00-03:00\",\n    \"tareas\": [55, 56, 57]\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registrar-mantencion","description":"<p>Este endpoint permite <strong>registrar mantenciones</strong> en el módulo de Mantenimiento, siguiendo la misma lógica presente en la aplicación web.</p>\n<p>Soporta:</p>\n<ul>\n<li><p>Mantención <strong>programada</strong></p>\n</li>\n<li><p>Mantención <strong>correctiva</strong></p>\n</li>\n<li><p>Mantención <strong>por siniestro</strong></p>\n</li>\n</ul>\n<p>Además:</p>\n<ul>\n<li>Si <strong>existe</strong> <code>odometro</code> y <code>fechaTerminoTrabajo</code>, se procede a <strong>intentar</strong> actualizar el odómetro de forma interna.</li>\n</ul>\n<h2 id=\"reglas-por-tipo\">Reglas por tipo</h2>\n<p><strong>Programada</strong></p>\n<ul>\n<li><p>Se considera programada si <code>programacionId</code> viene en el body <strong>o</strong> si <code>registro.tipoMantencionId = 1</code>.</p>\n</li>\n<li><p><code>programacionId</code> es <strong>obligatorio</strong>. Es lo que el endpoint de programar mantención entrega en message.</p>\n<ul>\n<li><p><em>Los id's de todas las programaciones pueden ser obtenidos por el endpoint de GET /mantenciones, documentado más abajo.</em></p>\n</li>\n<li><p><strong>IMPORTANTE: Solo es posible registrar mantenciones NO realizadas, por lo que si se envia un id de una programación que figura como \"Realizada\", este metodo va a retornar un error.</strong></p>\n</li>\n</ul>\n</li>\n<li><p><code>registro.vehiculoId</code> <strong>NO es obligatorio</strong> (se infiere desde la programación).</p>\n</li>\n</ul>\n<p><strong>Correctiva / Siniestro</strong></p>\n<ul>\n<li><p><code>programacionId</code> <strong>no aplica</strong>.</p>\n</li>\n<li><p><code>registro.vehiculoId</code> <strong>es obligatorio</strong>.</p>\n</li>\n</ul>\n<h2 id=\"datos-de-entrada\">Datos de entrada</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Nombre del campo</strong></th>\n<th><strong>Ubicación en JSON de body</strong></th>\n<th><strong>¿Requerido?</strong></th>\n<th><strong>Tipo de dato</strong></th>\n<th><strong>Descripción / Relación</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>idClient</code></td>\n<td>Raíz del JSON</td>\n<td>Siempre</td>\n<td>Integer</td>\n<td>ID del cliente a registrar.</td>\n</tr>\n<tr>\n<td><code>cerrar</code></td>\n<td>Raíz del JSON</td>\n<td>Opcional</td>\n<td>Boolean</td>\n<td>Si no se envía, se asume <code>true</code>.  <br />Si es <code>true</code>, entonces procede a <code>\"Guardar y cerrar\"</code> mantención, de lo contrario procede a <code>\"Guardar\".</code>  <br />(Equivalente de las opciones de aplicación web).</td>\n</tr>\n<tr>\n<td><code>programacionId</code></td>\n<td>Raíz del JSON</td>\n<td>Condicional</td>\n<td>Integer</td>\n<td><strong>Obligatorio</strong> si es programada.</td>\n</tr>\n<tr>\n<td><code>registro</code></td>\n<td>Raíz del JSON</td>\n<td>Siempre</td>\n<td>Object</td>\n<td>Objeto principal del registro.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"campos-de-registro\">Campos de <code>registro</code></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Nombre</strong></th>\n<th><strong>Ubicación</strong></th>\n<th><strong>¿Requerido?</strong></th>\n<th><strong>Tipo</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tipoMantencionId</code></td>\n<td><code>registro.tipoMantencionId</code></td>\n<td>Siempre</td>\n<td>Integer</td>\n<td>Tipo mantención. Si <code>== 1</code>, se trata como programada.</td>\n</tr>\n<tr>\n<td><code>nombre</code></td>\n<td><code>registro.nombre</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Nombre del registro.</td>\n</tr>\n<tr>\n<td><code>vehiculoId</code></td>\n<td><code>registro.vehiculoId</code></td>\n<td>Condicional</td>\n<td>Integer</td>\n<td><strong>Obligatorio</strong> en correctiva/siniestro. En programada se omite.</td>\n</tr>\n<tr>\n<td><code>patente</code></td>\n<td><code>registro.patente</code></td>\n<td>Opcional?</td>\n<td>String</td>\n<td>Patente del vehículo (informativa), no es obligatoria <strong>pero por consistencia en los informes, se recomienda enviar.</strong></td>\n</tr>\n<tr>\n<td><code>responsableId</code></td>\n<td><code>registro.responsableId</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Responsable (desde <code>/mantenimiento/metadata</code>).</td>\n</tr>\n<tr>\n<td><code>proveedorId</code></td>\n<td><code>registro.proveedorId</code></td>\n<td>Opcional</td>\n<td>Integer</td>\n<td>Proveedor (desde <code>/mantenimiento/metadata</code>).</td>\n</tr>\n<tr>\n<td><code>hes</code></td>\n<td><code>registro.hes</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Campo HES.</td>\n</tr>\n<tr>\n<td><code>encargadoIngreso</code></td>\n<td><code>registro.encargadoIngreso</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Encargado de ingreso.</td>\n</tr>\n<tr>\n<td><code>fechaIngreso</code></td>\n<td><code>registro.fechaIngreso</code></td>\n<td>Siempre</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Fecha/hora de ingreso.</td>\n</tr>\n<tr>\n<td><code>fechaInicioTrabajo</code></td>\n<td><code>registro.fechaInicioTrabajo</code></td>\n<td>Opcional</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Inicio del trabajo.</td>\n</tr>\n<tr>\n<td><code>fechaSalida</code></td>\n<td><code>registro.fechaSalida</code></td>\n<td>Siempre</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Fecha/hora de salida.</td>\n</tr>\n<tr>\n<td><code>fechaTerminoTrabajo</code></td>\n<td><code>registro.fechaTerminoTrabajo</code></td>\n<td>Opcional</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Término del trabajo. <strong>Requerido para SetOdometro</strong>.</td>\n</tr>\n<tr>\n<td><code>odometro</code></td>\n<td><code>registro.odometro</code></td>\n<td>Opcional</td>\n<td>Number</td>\n<td>Odómetro en <strong>km</strong>. Se convertirá a metros para SetOdometro.</td>\n</tr>\n<tr>\n<td><code>horometro</code></td>\n<td><code>registro.horometro</code></td>\n<td>Opcional</td>\n<td>Number</td>\n<td>Horómetro en <strong>horas</strong>.</td>\n</tr>\n<tr>\n<td><code>valor</code></td>\n<td><code>registro.valor</code></td>\n<td>Opcional</td>\n<td>Number</td>\n<td>Valor/costo, equivalente a <code>valor</code> en el apartado de <code>\"Información de taller\"</code> dentro de aplicación web.</td>\n</tr>\n<tr>\n<td><code>observaciones</code></td>\n<td><code>registro.observaciones</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Observaciones, quivalente a <code>observaciones</code> en el apartado de <code>\"Información de taller\"</code> dentro de aplicación web..</td>\n</tr>\n<tr>\n<td><code>patenteReemplazo</code></td>\n<td><code>registro.patenteReemplazo</code></td>\n<td>Opcional</td>\n<td>String</td>\n<td>Vehículo reemplazo.</td>\n</tr>\n<tr>\n<td><code>valorReemplazo</code></td>\n<td><code>registro.valorReemplazo</code></td>\n<td>Opcional</td>\n<td>Number</td>\n<td>Costo reemplazo.</td>\n</tr>\n<tr>\n<td><code>fechaInicioReemplazo</code></td>\n<td><code>registro.fechaInicioReemplazo</code></td>\n<td>Opcional</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Inicio reemplazo.</td>\n</tr>\n<tr>\n<td><code>fechaFinReemplazo</code></td>\n<td><code>registro.fechaFinReemplazo</code></td>\n<td>Opcional</td>\n<td>String (ISO-8601)  <br />(yyyy-MM-ddTHH:mm:ss.SSSZ)</td>\n<td>Fin reemplazo.</td>\n</tr>\n<tr>\n<td><code>tareas</code></td>\n<td><code>registro.tareas</code></td>\n<td>Opcional</td>\n<td>Array</td>\n<td>IDs de tareas (desde <code>/mantenimiento/metadata</code>).  <br />Corresponde a los <code>id's</code> de las tareas, o en caso de existir una actividad sin una tareas, se debe ingresar el <code>id</code> de la actividad.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"respuestas\">Respuestas</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Código</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>Registro procesado correctamente. Retorna <code>registroId</code>, <code>action</code>, <code>moduleResponse</code> y <code>odometerResponse</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta body o es inválido.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>idClient</code> o es inválido.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>registro</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>registro.tipoMantencionId</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>registro.fechaIngreso</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Falta <code>registro.fechaSalida</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Correctiva/Siniestro: falta <code>registro.vehiculoId</code>.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Programada: falta <code>programacionId</code>.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Falta Authorization o formato incorrecto.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Token inválido o usuario no encontrado.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>No se pudo validar sesión.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>Programación no encontrada (<code>programacionId</code> inválido).</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Error de módulo de mantenimiento o error interno.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"descripción-de-respuesta\">Descripción de respuesta</h2>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Campos dentro de json body</strong></th>\n<th><strong>Descripción</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>message</td>\n<td>Mensaje con feedback sobre si la inserción fué o no correcta.</td>\n</tr>\n<tr>\n<td>action</td>\n<td>INSERT -&gt; se ingresa un registro de forma correcta.  <br />UPDATE -&gt; se actualiza un re registro de forma correcta.</td>\n</tr>\n<tr>\n<td>idClient</td>\n<td>id del cliente que solicita.</td>\n</tr>\n<tr>\n<td>cerrar</td>\n<td>true cuando se solicita cerrar por body.</td>\n</tr>\n<tr>\n<td>programacionId</td>\n<td>id de programación registrada, cuando el registro es de tipo 1.</td>\n</tr>\n<tr>\n<td>registroId</td>\n<td>id único de registro de mantención, referente a la mantención registrada</td>\n</tr>\n<tr>\n<td>moduleResponse</td>\n<td>Contiene la respuesta que normalmente la aplicación web entrega.  <br /><code>id</code> -&gt; idem a registroId  <br /><code>delta</code> -&gt; json con información de fecha, horometro, odómetro. Ignorar, es para usos internos.</td>\n</tr>\n<tr>\n<td>odometerResponse</td>\n<td>Contiene un json con:  <br />attempted-&gt; <code>true</code> si se intenta modificar el odómetro, según se cumplan las condiciones necesarias (se envía lo requerido en el body, documentado anteriormente).  <br />ok -&gt; true la respuesta de <strong>intento</strong> de setear odómetro fue correcta. Solo presente cuando attempted es <code>true</code>.  <br />status -&gt; código http de respuesta.  <br />body -&gt; json con <code>result</code> que contiene \"<code>ERROR</code>\" o \"<code>1</code>\" cuando es <code>success</code>. Tambien contiene \"<code>mensaje\"</code> con el motivo de error al actualizar el odómetro, en caso de \"<code>ERROR</code>\".</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["mantenimiento","registrar-mantencion"],"host":["api","tranciti","com"],"query":[],"variable":[]}},"response":[{"id":"a3a48be0-a660-4150-8230-d6cbe706f71d","name":"Registrar mantención (OK)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"},{"key":"id-client","value":"{{id-client-autorizado}}","type":"text"},{"key":"x-api-key","value":"{{x-api-key}}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"idClient\": 1040,\n  \"cerrar\": true,\n  \"registro\": {\n    \"tipoMantencionId\": 3,\n    \"nombre\": \"tipo32\",\n    \"vehiculoId\": 17208,\n    \"patente\": \"3_Historico\",\n    \"responsableId\": 2364,\n    \"proveedorId\": 329,\n    \"hes\": \"6767\",\n    \"encargadoIngreso\": \"encsin2\",\n    \"fechaIngreso\": \"2025-12-17T00:00:00-03:00\",\n    \"fechaInicioTrabajo\": \"2025-12-29T00:00:00-03:00\",\n    \"fechaSalida\": \"2026-01-01T19:00:00-03:00\",\n    \"fechaTerminoTrabajo\": \"2025-12-29T00:00:00-03:00\",\n    \"odometro\": 449,\n    \"horometro\": 334,\n    \"valor\": 1232,\n    \"observaciones\": \"aaa2\",\n    \"patenteReemplazo\": \"gjkgf2\",\n    \"valorReemplazo\": 123,\n    \"fechaInicioReemplazo\": \"2025-12-03T00:00:00-03:00\",\n    \"fechaFinReemplazo\": \"2025-12-10T00:00:00-03:00\",\n    \"tareas\": [55, 56, 57]\n  }\n}"},"url":"https://api.tranciti.com/mantenimiento/registrar-mantencion"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Registro de mantención procesado correctamente\",\n    \"action\": \"INSERT\",\n    \"idClient\": 1040,\n    \"cerrar\": true,\n    \"programacionId\": null,\n    \"registroId\": 18786,\n    \"moduleResponse\": {\n        \"id\": 18786,\n        \"delta\": {\n            \"fecha\": null,\n            \"horometro\": null,\n            \"odometro\": null\n        }\n    },\n    \"odometerResponse\": {\n        \"attempted\": true,\n        \"ok\": true,\n        \"status\": 200,\n        \"body\": {\n            \"result\": \"ERROR\",\n            \"mensaje\": \"NO HAY DATOS GPS EN LA FECHA INDICADA - CARGA EN FECHA NO PERMITIDA \"\n        }\n    }\n}"}],"_postman_id":"e0549cee-ec28-472f-90ea-90c50522e0c1"},{"name":"Obtener registros de mantenciones realizadas","id":"d0c7418c-f006-4508-87f8-197b8c772572","request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"x-api-key","value":"<api-key-entregado>","description":"<p>API Key entregado</p>\n","type":"text"},{"key":"id-client","value":"<id-cliente>","description":"<p>ID del cliente (obligatorio).</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"fechaInicio\": \"2025-08-01T00:00:00-03:00\",\n  \"fechaFin\": \"2026-12-05T23:59:59-03:00\",\n  \"vehicleList\": [1,2,3,4]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registro-mantenciones","description":"<p>Entrega los <strong>registros de mantenciones realizadas</strong> en un rango de fechas para los vehículos indicados.</p>\n<p>Equivalente a lo que se puede hacer desde la aplicación web en:<br /><strong>Mantenimiento → Reportes → Registro de Mantenciones</strong>.</p>\n<hr />\n<h2 id=\"entradas\">Entradas</h2>\n<h3 id=\"headers\">Headers</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción / Relación</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>x-api-key</td>\n<td>headers.<code>x-api-key</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>API Key entregado.</td>\n</tr>\n<tr>\n<td>Authorization</td>\n<td>headers.<code>Authorization</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Bearer token del usuario. Formato: <code>Bearer {token}</code></td>\n</tr>\n<tr>\n<td>id-client</td>\n<td>headers.<code>id-client</code></td>\n<td>Sí</td>\n<td>integer</td>\n<td>ID de cliente. Es un entero</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"body-json\">Body (JSON)</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación en JSON de body</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción / Relación</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>fechaInicio</td>\n<td>body.<code>fechaInicio</code></td>\n<td>Sí</td>\n<td>string (ISO 8601 con offset)</td>\n<td>Inicio del rango. Debe incluir offset, ej: <code>2025-08-01T00:00:00-03:00</code>.</td>\n</tr>\n<tr>\n<td>fechaFin</td>\n<td>body.<code>fechaFin</code></td>\n<td>Sí</td>\n<td>string (ISO 8601 con offset)</td>\n<td>Fin del rango. Debe incluir offset, ej: <code>2026-12-05T23:59:59-03:00</code>. Debe ser <strong>mayor</strong> a <code>fechaInicio</code>.</td>\n</tr>\n<tr>\n<td>vehicleList</td>\n<td>body.<code>vehicleList</code></td>\n<td>Sí</td>\n<td>array</td>\n<td>Lista de IDs de vehículos a consultar. Debe contener al menos 1 entero &gt; 0.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"salidas\">Salidas</h2>\n<h3 id=\"200-ok\">200 OK</h3>\n<p>Retorna un <strong>array</strong> JSON, donde cada elemento corresponde a una registro de mantención.</p>\n<p>La salida es identica al .xlsx generado como reporte desde la aplicación web, solo que los nombres de los atributos estan en camelCase.</p>\n<p>En caso de no existir un atributo, viene un string vacio \"\".</p>\n<h4 id=\"estructura-de-cada-elemento-del-array\">Estructura de cada elemento del array</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación en JSON de salida</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción / Relación</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>patente</td>\n<td><code>[i].patente</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Patente del vehículo.</td>\n</tr>\n<tr>\n<td>nombreDeMantencion</td>\n<td><code>[i].nombreDeMantencion</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Nombre de mantención.</td>\n</tr>\n<tr>\n<td>fechaIngresoTaller</td>\n<td><code>[i].fechaIngresoTaller</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Fecha ingreso taller.  <br />Formato yyyy-mm-dd hh:mm:ss ej:  <br />2025-12-30 00:00:00</td>\n</tr>\n<tr>\n<td>actividad</td>\n<td><code>[i].actividad</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Actividad.</td>\n</tr>\n<tr>\n<td>tareas</td>\n<td><code>[i].tareas</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Tareas.</td>\n</tr>\n<tr>\n<td>usuario</td>\n<td><code>[i].usuario</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Usuario responsable de la mantención.</td>\n</tr>\n<tr>\n<td>taller</td>\n<td><code>[i].taller</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Taller/Proveedor.</td>\n</tr>\n<tr>\n<td>fechaDiagnostico</td>\n<td><code>[i].fechaDiagnostico</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Fecha diagnóstico.  <br /><em>yyyy-mm-dd</em></td>\n</tr>\n<tr>\n<td>horaDiagnostico</td>\n<td><code>[i].horaDiagnostico</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Hora diagnóstico.  <br />hh:mm:ss</td>\n</tr>\n<tr>\n<td>soporte</td>\n<td><code>[i].soporte</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Patente de reemplazo.</td>\n</tr>\n<tr>\n<td>fechaReemplazo</td>\n<td><code>[i].fechaReemplazo</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Fecha reemplazo.  <br />yyyy-mm-dd</td>\n</tr>\n<tr>\n<td>horaReemplazo</td>\n<td><code>[i].horaReemplazo</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Hora reemplazo.  <br />hh:mm:ss</td>\n</tr>\n<tr>\n<td>fechaDeSalidaTaller</td>\n<td><code>[i].fechaDeSalidaTaller</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Fecha de salida taller.  <br />yyyy-mm-dd</td>\n</tr>\n<tr>\n<td>horaDeSalidaTaller</td>\n<td><code>[i].horaDeSalidaTaller</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Hora de salida taller.  <br /><em>hh:mm:ss</em></td>\n</tr>\n<tr>\n<td>observacion</td>\n<td><code>[i].observacion</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Observación.</td>\n</tr>\n<tr>\n<td>estado</td>\n<td><code>[i].estado</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Estado.</td>\n</tr>\n<tr>\n<td>tiempoEntregaSoporte</td>\n<td><code>[i].tiempoEntregaSoporte</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Tiempo entrega soporte (formateado).  <br /><em>x</em> día/días/mes/meses/año/años <em>x</em> hora/horas/segundos/minutos según corresponda. Si es la fecha justa no va hora.</td>\n</tr>\n<tr>\n<td>tiempoEstadiaTaller</td>\n<td><code>[i].tiempoEstadiaTaller</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Tiempo estadía taller (formateado).  <br /><em>x</em> día/días/mes/meses/año/años <em>x</em> hora/horas/segundos/minutos según corresponda. Si es la fecha justa no va hora.</td>\n</tr>\n<tr>\n<td>tiempoSinSoporte</td>\n<td><code>[i].tiempoSinSoporte</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Tiempo sin soporte (formateado).  <br /><em>x</em> día/días/mes/meses/año/años <em>x</em> hora/horas/segundos/minutos según corresponda. Si es la fecha justa no va hora.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"400-bad-request\">400 Bad Request</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación en JSON de salida</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>message</td>\n<td>body.<code>message</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Error de validación del body (por ejemplo: vehicleList vacío, fechas inválidas, fechaFin &lt;= fechaInicio, offset ausente).</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"401-unauthorized\">401 Unauthorized</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación en JSON de salida</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>message</td>\n<td>body.<code>message</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Falta/invalidación de Authorization, token inválido, o sesión inválida.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"500-internal-server-error\">500 Internal Server Error</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Nombre del campo</th>\n<th>Ubicación en JSON de salida</th>\n<th>¿Requerido?</th>\n<th>Tipo de dato</th>\n<th>Descripción</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>message</td>\n<td>body.<code>message</code></td>\n<td>Sí</td>\n<td>string</td>\n<td>Error interno o error al consultar backend.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"protocol":"https","path":["mantenimiento","registro-mantenciones"],"host":["api","tranciti","com"],"query":[],"variable":[]}},"response":[{"id":"070a299e-def4-4554-b670-66e6a4de7e04","name":"200 OK - ejemplo","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"<api-key-entregada>"},{"key":"Authorization","value":"Bearer <token>"},{"key":"id-client","value":"<id-del-cliente>"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"fechaInicio\": \"2025-08-01T00:00:00-03:00\",\n  \"fechaFin\": \"2026-12-05T23:59:59-03:00\",\n  \"vehicleList\": [123,234,543]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registro-mantenciones"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"patente\": \"asdf\",\n        \"nombreDeMantencion\": \"correctivaporpagina\",\n        \"fechaIngresoTaller\": \"2025-12-30 00:00:00\",\n        \"actividad\": \"\",\n        \"tareas\": \"\",\n        \"usuario\": \"testeador (testeador@tranciti.cl)\",\n        \"taller\": \"Proveedor 1\",\n        \"fechaDiagnostico\": \"2025-12-30\",\n        \"horaDiagnostico\": \"00:00:00\",\n        \"soporte\": \"patrempppagina\",\n        \"fechaReemplazo\": \"2025-12-30\",\n        \"horaReemplazo\": \"00:00:00\",\n        \"fechaDeSalidaTaller\": \"2025-12-31\",\n        \"horaDeSalidaTaller\": \"00:00:00\",\n        \"observacion\": \"observacionesss\",\n        \"estado\": \"finalizada\",\n        \"tiempoEntregaSoporte\": \"\",\n        \"tiempoEstadiaTaller\": \"1 día \",\n        \"tiempoSinSoporte\": \"\"\n    }\n]"},{"id":"7dfc4692-4ce2-496e-9398-3c6c8897e22a","name":"400 Bad Request - ejemplo","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"<api-key-entregada>"},{"key":"Authorization","value":"Bearer <token>"},{"key":"id-client","value":"<id-del-cliente>"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"fechaInicio\": \"2025-08-01T00:00:00-03:00\",\n  \"fechaFin\": \"2025-08-01T00:00:00-03:00\",\n  \"vehicleList\": []\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registro-mantenciones"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"vehicleList es obligatorio y debe ser un array de enteros\"\n}"},{"id":"af01b06e-9092-4550-8310-b164e217491c","name":"401 Unauthorized - ejemplo","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"<api-key-entregada>"},{"key":"Authorization","value":"Bearer <token>"},{"key":"id-client","value":"<id-cliente>"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"fechaInicio\": \"2025-08-01T00:00:00-03:00\",\n  \"fechaFin\": \"2026-12-05T23:59:59-03:00\",\n  \"vehicleList\": [1234]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registro-mantenciones"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Token inválido o usuario no encontrado\"\n}"},{"id":"4e78521a-9335-4cc1-b246-0fac97e84f92","name":"500 Internal Server Error - ejemplo","originalRequest":{"method":"POST","header":[{"key":"x-api-key","value":"<api-key-entregada>"},{"key":"Authorization","value":"Bearer <token>"},{"key":"id-client","value":"<id-cliente>"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"fechaInicio\": \"2025-08-01T00:00:00-03:00\",\n  \"fechaFin\": \"2026-12-05T23:59:59-03:00\",\n  \"vehicleList\": [123]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.tranciti.com/mantenimiento/registro-mantenciones"},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"Error interno del servidor\"\n}"}],"_postman_id":"d0c7418c-f006-4508-87f8-197b8c772572"}]}