Endpoints de solo lectura que exponen los catálogos de configuración de tu compañía y devuelven los IDs reales que el alta de tareas necesita. Antes de crear una tarea, tu integración consulta estos catálogos para resolver qué procedencia, producto, cobertura, prestación, causa, geografía, finalización, formulario y campos dinámicos puede enviar.
Cada catálogo devuelve el ID real junto al nombre humano, así podés referenciar cada entrada con exactitud al armar el cuerpo de una tarea.
Todos los endpoints requieren un token JWT válido, una clave de API y el encabezado tenant. Consultá Autenticación .
Varios catálogos son jerárquicos: un catálogo hijo se filtra por el ID de su padre, pasado en la ruta. Por ejemplo, para listar los productos de una procedencia llamás a /catalogs/origins/{proid}/products; para listar ciudades recorrés país → departamento → ciudad → zona. Listá siempre un nivel para descubrir los IDs que vas a usar en el siguiente nivel — no hay búsqueda por nombre.
Los IDs son strings opacos (BigInt) — nunca los interpretes como números. Devolvelos exactamente como los recibís.
Solo registros activos. Cada catálogo devuelve las entradas activas; las inactivas nunca se listan.
Sin paginación. Los catálogos son chicos — se devuelve la lista plana completa. El filtro de consulta name acota los resultados por coincidencia parcial sin distinguir mayúsculas.
Límite de solicitudes: todos los endpoints de catálogos comparten un presupuesto de 60 solicitudes/min (ventana deslizante).
Envoltura de respuesta: { success, data, meta }, donde meta.count es la cantidad de filas.
Geográficos
Los catálogos geográficos forman una cascada estricta de cuatro niveles: País → Departamento → Ciudad → Zona . Cada nivel se filtra por los IDs de los niveles superiores, todos pasados en la ruta.
Países
GET /apidev/v1/catalogs/countries
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del país. Omitir para listar todo.
Campos de la respuesta
Campo Tipo Descripción paiidstring ID del país (usalo en el alta de tareas). namestring Nombre del país. gmtnumber Desfase de zona horaria (horas enteras).
curl -s "https://$TENANT/apidev/v1/catalogs/countries" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/countries ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
console . log ( data . map ( ( c ) => ` ${ c . paiid } : ${ c . name } ` ) ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/countries" ,
headers = headers ,
)
for country in response . json ( ) [ "data" ] :
print ( f" { country [ 'paiid' ] } : { country [ 'name' ] } " )
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "paiid" : "1" , "name" : "Uruguay" , "gmt" : -3 } ,
{ "paiid" : "2" , "name" : "Argentina" , "gmt" : -3 }
] ,
"meta" : { "count" : 2 }
}
Departamentos de un país
GET /apidev/v1/catalogs/countries/{paiid}/departments
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción paiidstring Sí ID del país (padre).
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del departamento.
Campos de la respuesta
Campo Tipo Descripción paiidstring ID del país (padre). paideplinstring ID del departamento (usalo en el alta de tareas). namestring Nombre del departamento.
curl -s "https://$TENANT/apidev/v1/catalogs/countries/1/departments" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/countries/1/departments ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/countries/1/departments" ,
headers = headers ,
)
data = response . json ( ) [ "data" ]
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "paiid" : "1" , "paideplin" : "4" , "name" : "Montevideo" } ,
{ "paiid" : "1" , "paideplin" : "5" , "name" : "Canelones" }
] ,
"meta" : { "count" : 2 }
}
Ciudades de un departamento
GET /apidev/v1/catalogs/countries/{paiid}/departments/{paideplin}/cities
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción paiidstring Sí ID del país. paideplinstring Sí ID del departamento.
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la ciudad.
Campos de la respuesta
Campo Tipo Descripción paiidstring ID del país. paideplinstring ID del departamento. paidepciulinstring ID de la ciudad (usalo en el alta de tareas). namestring Nombre de la ciudad.
curl -s "https://$TENANT/apidev/v1/catalogs/countries/1/departments/4/cities?name=mont" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/countries/1/departments/4/cities?name=mont ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/countries/1/departments/4/cities" ,
headers = headers ,
params = { "name" : "mont" } ,
)
data = response . json ( ) [ "data" ]
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "paiid" : "1" , "paideplin" : "4" , "paidepciulin" : "21" , "name" : "Montevideo" }
] ,
"meta" : { "count" : 1 }
}
Zonas de una ciudad
GET /apidev/v1/catalogs/countries/{paiid}/departments/{paideplin}/cities/{paidepciulin}/zones
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción paiidstring Sí ID del país. paideplinstring Sí ID del departamento. paidepciulinstring Sí ID de la ciudad.
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la zona.
Campos de la respuesta
Campo Tipo Descripción paiidstring ID del país. paideplinstring ID del departamento. paidepciulinstring ID de la ciudad. paidepciuzonlinstring ID de la zona (usalo en el alta de tareas). namestring Nombre de la zona.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "paiid" : "1" , "paideplin" : "4" , "paidepciulin" : "21" , "paidepciuzonlin" : "7" , "name" : "Centro" }
] ,
"meta" : { "count" : 1 }
}
Lugares especiales
Puntos de interés definidos para tu compañía. Devuelve solo los lugares que el usuario de la integración tiene permitido ver.
GET /apidev/v1/catalogs/special-places
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del lugar.
Campos de la respuesta
Campo Tipo Descripción lugespidstring ID del lugar especial. namestring Nombre del lugar. latstring | null Latitud (string decimal en crudo). lngstring | null Longitud (string decimal en crudo).
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "lugespid" : "31" , "name" : "Central Warehouse" , "lat" : "-34.8721" , "lng" : "-56.1234" }
] ,
"meta" : { "count" : 1 }
}
Tipos de lugar especial
GET /apidev/v1/catalogs/special-place-types
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del tipo.
Campos de la respuesta
Campo Tipo Descripción idstring ID del tipo de lugar especial. namestring Nombre del tipo.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "id" : "1" , "name" : "Warehouse" } ,
{ "id" : "2" , "name" : "Branch office" }
] ,
"meta" : { "count" : 2 }
}
Dominio
Catálogos de clasificación que describen una tarea: de dónde viene, qué producto y cobertura aplican, qué prestación se solicita y su causa/subcausa.
Procedencias
Procedencias — la fuente que genera una tarea.
GET /apidev/v1/catalogs/origins
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la procedencia.
Campos de la respuesta
Campo Tipo Descripción proidstring ID de la procedencia (usalo en el alta de tareas). namestring Nombre de la procedencia. statestring Siempre "A" (activo).
curl -s "https://$TENANT/apidev/v1/catalogs/origins" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/origins ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/origins" ,
headers = headers ,
)
data = response . json ( ) [ "data" ]
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "proid" : "12" , "name" : "Seguros ACME" , "state" : "A" }
] ,
"meta" : { "count" : 1 }
}
Productos de una procedencia
GET /apidev/v1/catalogs/origins/{proid}/products
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción proidstring Sí ID de la procedencia (padre).
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del producto.
Campos de la respuesta
Campo Tipo Descripción proidstring ID de la procedencia (padre). protipclilinstring ID del producto (usalo en el alta de tareas). namestring Nombre del producto.
curl -s "https://$TENANT/apidev/v1/catalogs/origins/12/products?name=gru" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/origins/12/products?name=gru ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/origins/12/products" ,
headers = headers ,
params = { "name" : "gru" } ,
)
data = response . json ( ) [ "data" ]
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "proid" : "12" , "protipclilin" : "3" , "name" : "Grúa Liviana" } ,
{ "proid" : "12" , "protipclilin" : "7" , "name" : "Grúa Pesada" }
] ,
"meta" : { "count" : 2 }
}
Coberturas de un producto
GET /apidev/v1/catalogs/origins/{proid}/products/{protipclilin}/coverages
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción proidstring Sí ID de la procedencia. protipclilinstring Sí ID del producto.
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la cobertura.
Campos de la respuesta
Campo Tipo Descripción proidstring ID de la procedencia. protipclilinstring ID del producto. procoblinstring ID de la cobertura (usalo en el alta de tareas). namestring Nombre de la cobertura. monthly_quotanumber Cupo mensual configurado. yearly_quotanumber Cupo anual configurado. quota_controlstring | null Flag/código de control de cupo.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{
"proid" : "12" ,
"protipclilin" : "7" ,
"procoblin" : "5" ,
"name" : "Cobertura Premium" ,
"monthly_quota" : 4 ,
"yearly_quota" : 24 ,
"quota_control" : "S"
}
] ,
"meta" : { "count" : 1 }
}
Prestaciones
Prestaciones — el tipo de servicio solicitado para una tarea.
GET /apidev/v1/catalogs/services
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la prestación.
Campos de la respuesta
Campo Tipo Descripción prestaidstring ID de la prestación (usalo en el alta de tareas). namestring Nombre de la prestación. requires_destinationboolean Si exige una causa/subcausa de destino. statestring Siempre "A" (activo).
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "prestaid" : "20" , "name" : "Asistencia en ruta" , "requires_destination" : false , "state" : "A" }
] ,
"meta" : { "count" : 1 }
}
Causas de una prestación
Devuelve solo las causas asignadas a la prestación — no el catálogo general de causas. Esto es lo que el alta de tareas espera.
GET /apidev/v1/catalogs/services/{prestaid}/causes
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción prestaidstring Sí ID de la prestación (padre).
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la causa.
Campos de la respuesta
Campo Tipo Descripción prestaidstring ID de la prestación (padre). cauidstring ID de la causa (usalo en el alta de tareas). namestring Nombre de la causa. assigned_subcausesnumber Cuántas subcausas tiene asignadas bajo esta prestación.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "prestaid" : "20" , "cauid" : "8" , "name" : "Neumático pinchado" , "assigned_subcauses" : 3 }
] ,
"meta" : { "count" : 1 }
}
Listar las causas por prestación garantiza que solo obtengas las causas que la prestación realmente acepta. Una causa que existe en el catálogo general pero no está asignada a la prestación sería rechazada al crear la tarea.
Subcausas de una causa
GET /apidev/v1/catalogs/causes/{cauid}/subcauses
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción cauidstring Sí ID de la causa (padre).
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la subcausa.
Campos de la respuesta
Campo Tipo Descripción cauidstring ID de la causa (padre). causubcaulinstring ID de la subcausa (usalo en el alta de tareas). namestring Nombre de la subcausa. priority_namestring | null Nombre de la prioridad asociada (puede ser null).
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "cauid" : "8" , "causubcaulin" : "15" , "name" : "Delantero izquierdo" , "priority_name" : "Alta" }
] ,
"meta" : { "count" : 1 }
}
Motivos
Motivos de servicio — usados en el modo simple del alta de tareas.
GET /apidev/v1/catalogs/reasons
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del motivo.
Campos de la respuesta
Campo Tipo Descripción motidstring ID del motivo (usalo en el alta de tareas). namestring Nombre del motivo.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "motid" : "3" , "name" : "Avería del vehículo" }
] ,
"meta" : { "count" : 1 }
}
Prioridades
GET /apidev/v1/catalogs/priorities
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la prioridad.
Campos de la respuesta
Campo Tipo Descripción priidstring ID de la prioridad. namestring Nombre de la prioridad. valuenumber Valor numérico de orden (típicamente 1–3).
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "priid" : "1" , "name" : "Alta" , "value" : 1 } ,
{ "priid" : "2" , "name" : "Media" , "value" : 2 }
] ,
"meta" : { "count" : 2 }
}
Estados de tarea
GET /apidev/v1/catalogs/task-statuses
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del estado.
Campos de la respuesta
Campo Tipo Descripción idstring ID del estado. codestring Código del estado (SA, ASI, ACE, INI, USU, FIN, CAN). namestring Etiqueta humana del estado.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "id" : "1" , "code" : "SA" , "name" : "Sin asignar" } ,
{ "id" : "6" , "code" : "FIN" , "name" : "Finalizada" }
] ,
"meta" : { "count" : 2 }
}
Turnos
GET /apidev/v1/catalogs/shifts
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del turno.
Campos de la respuesta
Campo Tipo Descripción turidstring ID del turno (usalo en la reserva de la tarea). namestring Nombre del turno.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "turid" : "1" , "name" : "Mañana" } ,
{ "turid" : "2" , "name" : "Noche" }
] ,
"meta" : { "count" : 2 }
}
Recursos
Catálogos operativos: finalizaciones, formularios, listas de formulario, tipos de vehículo y los dos catálogos sensibles de flota (prestadores y dispositivos) que requieren un permiso dedicado.
Finalizaciones
GET /apidev/v1/catalogs/end-reasons
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la finalización.
Campos de la respuesta
Campo Tipo Descripción finseridstring ID de la finalización. namestring Nombre de la finalización. successfulboolean Si marca la tarea como exitosa. pendingboolean Si deja la tarea pendiente.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "finserid" : "3" , "name" : "Resuelto en sitio" , "successful" : true , "pending" : false }
] ,
"meta" : { "count" : 1 }
}
Finalizaciones por productos
Resolvé las finalizaciones de varios productos en una sola llamada. El cuerpo de la solicitud es un filtro (es de solo lectura y cacheable, no una mutación), por eso este endpoint usa POST.
POST /apidev/v1/catalogs/products/end-reasons
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Cuerpo de la solicitud
Campo Tipo Requerido Descripción productsarray Sí De 1 a 50 pares de producto. products[].proidstring Sí ID de la procedencia. products[].protipclilinstring Sí ID del producto.
Campos de la respuesta
data es un array agrupado por producto. Si un producto no tiene finalizaciones configuradas, cae a todas las activas.
Campo Tipo Descripción proidstring ID de la procedencia del producto pedido. protipclilinstring ID del producto pedido. end_reasons[].finseridstring ID de la finalización. end_reasons[].namestring Nombre de la finalización.
curl -s -X POST "https://$TENANT/apidev/v1/catalogs/products/end-reasons" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{ "products": [ { "proid": "12", "protipclilin": "7" } ] }'
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/products/end-reasons ` ,
{
method : "POST" ,
headers : { ... headers , "Content-Type" : "application/json" } ,
body : JSON . stringify ( { products : [ { proid : "12" , protipclilin : "7" } ] } ) ,
}
) ;
const { data } = await response . json ( ) ;
response = requests . post (
f"https:// { TENANT } /apidev/v1/catalogs/products/end-reasons" ,
headers = { ** headers , "Content-Type" : "application/json" } ,
json = { "products" : [ { "proid" : "12" , "protipclilin" : "7" } ] } ,
)
data = response . json ( ) [ "data" ]
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{
"proid" : "12" ,
"protipclilin" : "7" ,
"end_reasons" : [
{ "finserid" : "3" , "name" : "Resuelto en sitio" } ,
{ "finserid" : "8" , "name" : "Trasladado a taller" }
]
}
] ,
"meta" : { "count" : 1 }
}
GET /apidev/v1/catalogs/forms
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del formulario.
Campo Tipo Descripción formidstring ID del formulario. namestring Nombre del formulario.
{
"success" : true ,
"data" : [
{ "formid" : "9" , "name" : "Reporte de daños" }
] ,
"meta" : { "count" : 1 }
}
Formularios habilitados para un producto específico.
GET /apidev/v1/catalogs/products/{proid}/{protipclilin}/forms
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetro Tipo Requerido Descripción proidstring Sí ID de la procedencia. protipclilinstring Sí ID del producto.
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del formulario.
Campo Tipo Descripción formidstring ID del formulario. namestring Nombre del formulario. requiredboolean Si el formulario es obligatorio para el producto.
{
"success" : true ,
"data" : [
{ "formid" : "9" , "name" : "Reporte de daños" , "required" : true }
] ,
"meta" : { "count" : 1 }
}
Listas de opciones de formulario/OAV. Cada lista se referencia por el list_id de un campo dinámico.
GET /apidev/v1/catalogs/form-lists
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la lista.
Campo Tipo Descripción forlisidstring ID de la lista (referenciado por oav-fields.list_id). namestring Nombre de la lista.
{
"success" : true ,
"data" : [
{ "forlisid" : "5" , "name" : "Colores de vehículo" }
] ,
"meta" : { "count" : 1 }
}
Tipos de vehículo
GET /apidev/v1/catalogs/vehicle-types
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del tipo de vehículo.
Campos de la respuesta
Campo Tipo Descripción tipvehidstring ID del tipo de vehículo (usalo en el alta de tareas). namestring Nombre del tipo de vehículo.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "tipvehid" : "1" , "name" : "Auto" } ,
{ "tipvehid" : "2" , "name" : "Moto" }
] ,
"meta" : { "count" : 2 }
}
Prestadores
Los prestadores exponen vínculos persona/flota con la compañía. Este endpoint requiere el permiso dedicado APICLI_FLEET_DEVICES_READ, no APICLI_CATALOGS_READ.
GET /apidev/v1/catalogs/providers
Permiso APICLI_FLEET_DEVICES_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del prestador.
Campos de la respuesta
Campo Tipo Descripción preidstring ID del prestador (usalo en la reserva de la tarea). namestring Nombre del prestador.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{ "preid" : "30" , "name" : "Grúas Región Norte" }
] ,
"meta" : { "count" : 1 }
}
Dispositivos
Los dispositivos exponen vínculos de flota con la compañía. Este endpoint requiere APICLI_FLEET_DEVICES_READ. Devuelve solo los dispositivos que el usuario de la integración tiene permitido ver.
GET /apidev/v1/catalogs/devices
Permiso APICLI_FLEET_DEVICES_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de consulta
Parámetro Tipo Requerido Descripción namestring No Coincidencia parcial, sin distinguir mayúsculas, sobre el nombre del dispositivo.
Campos de la respuesta
Campo Tipo Descripción vehidstring ID del dispositivo (usalo en la reserva de la tarea). namestring Nombre del dispositivo. platestring | null Patente / alias. vehicle_typestring | null Nombre del tipo de vehículo. providerstring | null Nombre del prestador.
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{
"vehid" : "104820579301" ,
"name" : "Movil 10" ,
"plate" : "ABC123" ,
"vehicle_type" : "Grúa" ,
"provider" : "Grúas Región Norte"
}
] ,
"meta" : { "count" : 1 }
}
OAV
Los OAV (campos dinámicos) definen los campos personalizados que un producto requiere. Es el catálogo clave para armar el cuerpo de una tarea: cruzalo contra tus dynamic_fields para evitar los errores OAV_REQUIRED_MISSING, OAV_TYPE_MISMATCH y OAV_LIST_VALUE_INVALID al crear la tarea.
Campos dinámicos de un producto
Devuelve cada campo dinámico del producto con su tipo, si es obligatorio y —cuando el campo es una lista— sus opciones válidas resueltas en la misma respuesta.
GET /apidev/v1/catalogs/products/{proid}/{protipclilin}/oav-fields
Permiso APICLI_CATALOGS_READ
Límite de solicitudes 60 solicitudes/min (ventana deslizante)
Parámetros de ruta
Parámetro Tipo Requerido Descripción proidstring Sí ID de la procedencia. protipclilinstring Sí ID del producto.
Campos de la respuesta
Campo Tipo Descripción item_idstring ID del campo dinámico. labelstring Nombre humano del campo. typestring TEXT, NUMBER, BOOLEAN, DATE, DATETIME o LISTA.requiredboolean Si el campo es obligatorio para crear la tarea. readonlyboolean Flag informativo de solo lectura. ordernumber Orden de presentación. list_idstring | null Cuando type es LISTA, el ID de la lista de opciones. list_optionsarray Opciones válidas cuando type es LISTA; vacío en otros casos. Cada una: { value, label }.
curl -s "https://$TENANT/apidev/v1/catalogs/products/12/7/oav-fields" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"
const response = await fetch (
` https:// ${ TENANT } /apidev/v1/catalogs/products/12/7/oav-fields ` ,
{ headers }
) ;
const { data } = await response . json ( ) ;
const required = data . filter ( ( f ) => f . required ) ;
console . log ( ` Required fields: ${ required . map ( ( f ) => f . label ) . join ( ", " ) } ` ) ;
response = requests . get (
f"https:// { TENANT } /apidev/v1/catalogs/products/12/7/oav-fields" ,
headers = headers ,
)
fields = response . json ( ) [ "data" ]
required = [ f [ "label" ] for f in fields if f [ "required" ] ]
print ( f"Required fields: { ', ' . join ( required ) } " )
Respuesta de ejemplo
{
"success" : true ,
"data" : [
{
"item_id" : "42" ,
"label" : "Póliza" ,
"type" : "TEXT" ,
"required" : true ,
"readonly" : false ,
"order" : 1 ,
"list_id" : null ,
"list_options" : [ ]
} ,
{
"item_id" : "55" ,
"label" : "Tipo de daño" ,
"type" : "LISTA" ,
"required" : true ,
"readonly" : false ,
"order" : 2 ,
"list_id" : "9" ,
"list_options" : [
{ "value" : "MEC" , "label" : "Mecánico" } ,
{ "value" : "ELE" , "label" : "Eléctrico" }
]
}
] ,
"meta" : { "count" : 2 }
}
Las opciones de lista vienen resueltas
Cuando el type de un campo es LISTA, sus opciones válidas ya vienen anidadas bajo list_options. No necesitás llamar a Listas de formulario por separado para validar un campo dinámico — usá list_options[].value como el valor aceptado.
Errores
Todos los endpoints de catálogos usan la envoltura de error moderna: { success: false, error: { code, message, hint } }. Consultá Manejo de errores para la referencia completa.
Código HTTP Descripción INVALID_ID400 Un ID de la ruta no es un identificador válido. INVALID_BODY400 products[] está vacío, ausente o supera los 50 (en Finalizaciones por productos ).UNAUTHORIZED401 tenant / Authorization / X-API-Key ausente, inválido o expirado. FORBIDDEN403 El token no tiene APICLI_CATALOGS_READ (o APICLI_FLEET_DEVICES_READ en prestadores/dispositivos). NOT_FOUND404 El padre de una cascada no existe en tu compañía. RATE_LIMITED429 Se superaron 60 solicitudes/min. INTERNAL_ERROR500 Error inesperado del servidor.