Saltar al contenido principal

Catálogos

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.

Requisitos previos

Todos los endpoints requieren un token JWT válido, una clave de API y el encabezado tenant. Consultá Autenticación.

Patrón de cascada

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.

Notas comunes
  • 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del país. Omitir para listar todo.

Campos de la respuesta

CampoTipoDescripción
paiidstringID del país (usalo en el alta de tareas).
namestringNombre del país.
gmtnumberDesfase 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"

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
paiidstringID del país (padre).

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del departamento.

Campos de la respuesta

CampoTipoDescripción
paiidstringID del país (padre).
paideplinstringID del departamento (usalo en el alta de tareas).
namestringNombre del departamento.
curl -s "https://$TENANT/apidev/v1/catalogs/countries/1/departments" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
paiidstringID del país.
paideplinstringID del departamento.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la ciudad.

Campos de la respuesta

CampoTipoDescripción
paiidstringID del país.
paideplinstringID del departamento.
paidepciulinstringID de la ciudad (usalo en el alta de tareas).
namestringNombre 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"

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
paiidstringID del país.
paideplinstringID del departamento.
paidepciulinstringID de la ciudad.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la zona.

Campos de la respuesta

CampoTipoDescripción
paiidstringID del país.
paideplinstringID del departamento.
paidepciulinstringID de la ciudad.
paidepciuzonlinstringID de la zona (usalo en el alta de tareas).
namestringNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del lugar.

Campos de la respuesta

CampoTipoDescripción
lugespidstringID del lugar especial.
namestringNombre del lugar.
latstring | nullLatitud (string decimal en crudo).
lngstring | nullLongitud (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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del tipo.

Campos de la respuesta

CampoTipoDescripción
idstringID del tipo de lugar especial.
namestringNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la procedencia.

Campos de la respuesta

CampoTipoDescripción
proidstringID de la procedencia (usalo en el alta de tareas).
namestringNombre de la procedencia.
statestringSiempre "A" (activo).
curl -s "https://$TENANT/apidev/v1/catalogs/origins" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
proidstringID de la procedencia (padre).

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del producto.

Campos de la respuesta

CampoTipoDescripción
proidstringID de la procedencia (padre).
protipclilinstringID del producto (usalo en el alta de tareas).
namestringNombre 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"

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
proidstringID de la procedencia.
protipclilinstringID del producto.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la cobertura.

Campos de la respuesta

CampoTipoDescripción
proidstringID de la procedencia.
protipclilinstringID del producto.
procoblinstringID de la cobertura (usalo en el alta de tareas).
namestringNombre de la cobertura.
monthly_quotanumberCupo mensual configurado.
yearly_quotanumberCupo anual configurado.
quota_controlstring | nullFlag/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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la prestación.

Campos de la respuesta

CampoTipoDescripción
prestaidstringID de la prestación (usalo en el alta de tareas).
namestringNombre de la prestación.
requires_destinationbooleanSi exige una causa/subcausa de destino.
statestringSiempre "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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
prestaidstringID de la prestación (padre).

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la causa.

Campos de la respuesta

CampoTipoDescripción
prestaidstringID de la prestación (padre).
cauidstringID de la causa (usalo en el alta de tareas).
namestringNombre de la causa.
assigned_subcausesnumberCuá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 }
}
Asignadas vs generales

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
cauidstringID de la causa (padre).

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la subcausa.

Campos de la respuesta

CampoTipoDescripción
cauidstringID de la causa (padre).
causubcaulinstringID de la subcausa (usalo en el alta de tareas).
namestringNombre de la subcausa.
priority_namestring | nullNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del motivo.

Campos de la respuesta

CampoTipoDescripción
motidstringID del motivo (usalo en el alta de tareas).
namestringNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la prioridad.

Campos de la respuesta

CampoTipoDescripción
priidstringID de la prioridad.
namestringNombre de la prioridad.
valuenumberValor 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del estado.

Campos de la respuesta

CampoTipoDescripción
idstringID del estado.
codestringCódigo del estado (SA, ASI, ACE, INI, USU, FIN, CAN).
namestringEtiqueta 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del turno.

Campos de la respuesta

CampoTipoDescripción
turidstringID del turno (usalo en la reserva de la tarea).
namestringNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la finalización.

Campos de la respuesta

CampoTipoDescripción
finseridstringID de la finalización.
namestringNombre de la finalización.
successfulbooleanSi marca la tarea como exitosa.
pendingbooleanSi 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Cuerpo de la solicitud

CampoTipoRequeridoDescripción
productsarrayDe 1 a 50 pares de producto.
products[].proidstringID de la procedencia.
products[].protipclilinstringID 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.

CampoTipoDescripción
proidstringID de la procedencia del producto pedido.
protipclilinstringID del producto pedido.
end_reasons[].finseridstringID de la finalización.
end_reasons[].namestringNombre 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" } ] }'

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 }
}

Formularios

GET/apidev/v1/catalogs/forms
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del formulario.

Campos de la respuesta

CampoTipoDescripción
formidstringID del formulario.
namestringNombre del formulario.

Respuesta de ejemplo

{
"success": true,
"data": [
{ "formid": "9", "name": "Reporte de daños" }
],
"meta": { "count": 1 }
}

Formularios de un producto

Formularios habilitados para un producto específico.

GET/apidev/v1/catalogs/products/{proid}/{protipclilin}/forms
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
proidstringID de la procedencia.
protipclilinstringID del producto.

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del formulario.

Campos de la respuesta

CampoTipoDescripción
formidstringID del formulario.
namestringNombre del formulario.
requiredbooleanSi el formulario es obligatorio para el producto.

Respuesta de ejemplo

{
"success": true,
"data": [
{ "formid": "9", "name": "Reporte de daños", "required": true }
],
"meta": { "count": 1 }
}

Listas de formulario

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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre de la lista.

Campos de la respuesta

CampoTipoDescripción
forlisidstringID de la lista (referenciado por oav-fields.list_id).
namestringNombre de la lista.

Respuesta de ejemplo

{
"success": true,
"data": [
{ "forlisid": "5", "name": "Colores de vehículo" }
],
"meta": { "count": 1 }
}

Tipos de vehículo

GET/apidev/v1/catalogs/vehicle-types
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del tipo de vehículo.

Campos de la respuesta

CampoTipoDescripción
tipvehidstringID del tipo de vehículo (usalo en el alta de tareas).
namestringNombre del tipo de vehículo.

Respuesta de ejemplo

{
"success": true,
"data": [
{ "tipvehid": "1", "name": "Auto" },
{ "tipvehid": "2", "name": "Moto" }
],
"meta": { "count": 2 }
}

Prestadores

Catálogo sensible

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
PermisoAPICLI_FLEET_DEVICES_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del prestador.

Campos de la respuesta

CampoTipoDescripción
preidstringID del prestador (usalo en la reserva de la tarea).
namestringNombre del prestador.

Respuesta de ejemplo

{
"success": true,
"data": [
{ "preid": "30", "name": "Grúas Región Norte" }
],
"meta": { "count": 1 }
}

Dispositivos

Catálogo sensible

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
PermisoAPICLI_FLEET_DEVICES_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de consulta

ParámetroTipoRequeridoDescripción
namestringNoCoincidencia parcial, sin distinguir mayúsculas, sobre el nombre del dispositivo.

Campos de la respuesta

CampoTipoDescripción
vehidstringID del dispositivo (usalo en la reserva de la tarea).
namestringNombre del dispositivo.
platestring | nullPatente / alias.
vehicle_typestring | nullNombre del tipo de vehículo.
providerstring | nullNombre 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
PermisoAPICLI_CATALOGS_READ
Límite de solicitudes60 solicitudes/min (ventana deslizante)

Parámetros de ruta

ParámetroTipoRequeridoDescripción
proidstringID de la procedencia.
protipclilinstringID del producto.

Campos de la respuesta

CampoTipoDescripción
item_idstringID del campo dinámico.
labelstringNombre humano del campo.
typestringTEXT, NUMBER, BOOLEAN, DATE, DATETIME o LISTA.
requiredbooleanSi el campo es obligatorio para crear la tarea.
readonlybooleanFlag informativo de solo lectura.
ordernumberOrden de presentación.
list_idstring | nullCuando type es LISTA, el ID de la lista de opciones.
list_optionsarrayOpciones 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"

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ódigoHTTPDescripción
INVALID_ID400Un ID de la ruta no es un identificador válido.
INVALID_BODY400products[] está vacío, ausente o supera los 50 (en Finalizaciones por productos).
UNAUTHORIZED401tenant / Authorization / X-API-Key ausente, inválido o expirado.
FORBIDDEN403El token no tiene APICLI_CATALOGS_READ (o APICLI_FLEET_DEVICES_READ en prestadores/dispositivos).
NOT_FOUND404El padre de una cascada no existe en tu compañía.
RATE_LIMITED429Se superaron 60 solicitudes/min.
INTERNAL_ERROR500Error inesperado del servidor.