Appearance
Asignaciones de personal
Devuelve el personal con asignación vigente y aprobada en contratos de los comitentes solicitados.
GET /ruc/api/asignaciones_personal?id_comitente=9999| Header | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Bearer <token> (ver) |
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
id_comitente | string | Sí | Uno o varios IDs separados por coma (9999 o 9999,9998). Sólo enteros positivos. |
incluir | string | No | Único valor admitido: estado_requisitos. Agrega a cada registro qué requisitos adeuda. |
requiere_presentar | int | No | 1 devuelve sólo los recursos que adeudan al menos un requisito. Requiere incluir=estado_requisitos. |
limit | int | No | Máximo de registros. Predeterminado y máximo: 5000, y 500 con incluir. |
offset | int | No | Registros a saltear. Predeterminado: 0. |
Se pueden pedir varios comitentes en una sola llamada. Si alguno está fuera de tu alcance, la respuesta completa es 403: no se devuelve parcialmente el resto.
Un limit mayor al máximo no es un error: se acota a 5000 en silencio. El valor efectivamente aplicado viaja en paginado.limit, así que se puede verificar sin adivinar.
Cómo recorrer todas las páginas
El bloque paginado de cada respuesta trae lo necesario para saber si falta algo, sin llevar la cuenta por tu lado:
| Campo | Qué es |
|---|---|
limit | El límite efectivo de esta respuesta |
offset | Desde qué registro arranca |
count | Cuántos registros trae esta página |
total | Cuántos hay en total para la consulta |
Hay más páginas mientras offset + count < total. Esa cuenta no hace falta hacerla: cuando quedan más registros, la respuesta incluye un link next en _links con la URL ya armada —conservando todos los parámetros de la petición original— y un prev cuando el offset es mayor a cero. Cuando no hay más, el link simplemente no viene.
bash
URL='https://auditium.com.ar/ruc/api/asignaciones_personal?id_comitente=9999&limit=1000'
while [ -n "$URL" ]; do
R=$(curl -s "$URL" -H "Authorization: Bearer $TOKEN")
echo "$R" | jq -r '.data[] | [.cuil, .apellido, .nombre] | @tsv'
URL=$(echo "$R" | jq -r '._links[]? | select(.rel == "next") | .href')
doneDetectar si el padrón cambió, sin recorrerlo
La respuesta incluye un header ETag calculado sobre data:
ETag: "31fb9e7dbd42eea3a8cb8a2133fdd952"Guardándolo entre corridas se detecta si la misma consulta devuelve algo distinto —un alta, una baja, un dato corregido— comparando un hash en lugar de recorrer registro por registro.
Es para eso, y no para caché condicional: el endpoint no responde 304 si se envía If-None-Match. Dos peticiones idénticas devuelven el mismo ETag porque el orden del resultado es determinístico.
Qué incluye
Una persona entra en el resultado cuando:
- es un recurso de tipo persona;
- tiene una asignación vigente a la fecha y aprobada;
- esa asignación pertenece a un contrato de alguno de los comitentes pedidos;
- tiene número de documento cargado.
Una misma persona suele estar cargada por más de un contratista, y los datos no siempre coinciden. Se devuelve una fila por (CUIL, comitente), la de la asignación más reciente. Ante dos peticiones idénticas se obtiene la misma respuesta y el mismo ETag.
No se envían emails, teléfonos ni direcciones.
Respuesta
json
{
"data": [
{
"cuil": "20-99999999-9",
"dni": "99999999",
"apellido": "PEREZ",
"nombre": "JUAN CARLOS",
"id_contratista": 1234,
"id_comitente": 9999
}
],
"paginado": {
"limit": 5000,
"offset": 0,
"count": 1,
"total": 1
},
"_links": [
{ "href": "https://auditium.com.ar/ruc/api/logout", "rel": "logout", "method": "POST" }
]
}| Campo | Tipo | Descripción |
|---|---|---|
data[].cuil | string | CUIL |
data[].dni | string | Número de documento |
data[].apellido | string | Apellido |
data[].nombre | string | Nombre |
data[].id_contratista | int | Contratista al que pertenece el recurso. Es el id_contratista que pide POST /presentaciones |
data[].id_comitente | int | Comitente de la asignación |
paginado.limit | int | Límite aplicado |
paginado.offset | int | Desplazamiento aplicado |
paginado.count | int | Registros en esta página |
paginado.total | int | Registros disponibles en total |
Qué adeuda cada recurso
GET /ruc/api/asignaciones_personal?id_comitente=9999&incluir=estado_requisitosCada registro trae un array con los requisitos que acreditás y que aplican al subtipo de ese recurso:
json
{
"cuil": "20-99999999-9",
"dni": "99999999",
"apellido": "PEREZ",
"nombre": "JUAN CARLOS",
"id_contratista": 1234,
"id_comitente": 9999,
"estado_requisitos": [
{
"id_requisito": 528,
"requisito": "PASE - SEGURIDAD EN PROCESOS",
"requiere_presentar": true,
"vence_el": null
}
]
}| Campo | Tipo | Descripción |
|---|---|---|
id_requisito | int | El que se usa como id_requisito al presentar |
requisito | string | Nombre del requisito |
requiere_presentar | bool | true cuando hay que presentar |
vence_el | date | null | Vencimiento de lo presentado, o null si el requisito no vence |
requiere_presentar vale true tanto si nunca se presentó como si lo presentado fue rechazado: en los dos casos corresponde presentar.
Con vence_el se resuelve la renovación anticipada —presentar mientras el certificado vigente todavía no caducó—, aplicando tu propio criterio de anticipación.
Un requisito que no acreditás no aparece nunca. Uno que acreditás pero que no aplica al subtipo del recurso, tampoco; si no aplica ninguno, el array viaja vacío.
De acá a la presentación, sin buscar nada más
Cada registro trae el id_contratista al que pertenece el recurso, que es justamente el parámetro que POST /presentaciones exige para el lote. Con eso, armar la presentación sale de esta misma respuesta: se agrupan los recursos que adeudan por id_contratista y por id_requisito, y cada grupo es un POST.
bash
curl -s -H "Authorization: Bearer $TOKEN" \
'https://auditium.com.ar/ruc/api/asignaciones_personal?id_comitente=9999&incluir=estado_requisitos&requiere_presentar=1' \
| jq -r '.data[] | .id_contratista as $c | .cuil as $cuil
| .estado_requisitos[] | select(.requiere_presentar)
| [$c, .id_requisito, $cuil] | @tsv'Todos los documentos de un mismo POST tienen que ser del mismo contratista: si el lote mezcla recursos de dos, los que no le pertenecen se rechazan uno a uno.
Sólo quienes adeudan
GET /ruc/api/asignaciones_personal?id_comitente=9999&incluir=estado_requisitos&requiere_presentar=1Devuelve únicamente los recursos que adeudan al menos un requisito, cada uno con su array completo. paginado.total cuenta con el mismo criterio, así que el paginado se recorre igual que siempre.
Sin incluir no cambia nada
La respuesta sin el parámetro es idéntica a la de siempre, y el máximo de limit sigue siendo 5000. La expansión no se activa por perfil ni por defecto: hay que pedirla.
Un valor no reconocido en incluir responde 400 en vez de ignorarse, para que un error de tipeo no se confunda con una respuesta en la que no hay nada que informar.
Paginado
Seguir pidiendo mientras offset + count < total, incrementando offset en limit:
offset=0 → count=5000, total=12000
offset=5000 → count=5000
offset=10000 → count=2000 → finMientras queden páginas, _links incluye next con la URL ya armada (y prev cuando no estás en la primera). Seguir next hasta que desaparezca evita la aritmética.
ETag
La respuesta incluye un header ETag calculado sobre data. Comparándolo con el de la corrida anterior se detecta si el padrón cambió, sin recorrer registro por registro.
Errores
| Código | type | Caso |
|---|---|---|
400 | parametro-requerido | Falta id_comitente |
400 | parametro-invalido | id_comitente, limit, offset, incluir o requiere_presentar con valor no válido, o requiere_presentar sin incluir=estado_requisitos |
401 | credenciales-ausentes / credenciales-invalidas | Token ausente, inválido o vencido |
403 | ambito-insuficiente | Algún id_comitente está fuera de tu alcance |
El detalle de cada uno está en el catálogo de errores.
Ejemplo completo
bash
# 1) Login
TOKEN=$(curl -s -X POST -u "$AUDITIUM_USER:$AUDITIUM_PASS" \
https://auditium.com.ar/ruc/api/login | jq -r .access_token)
# 2) Personal del comitente 36
curl -s 'https://auditium.com.ar/ruc/api/asignaciones_personal?id_comitente=9999' \
-H "Authorization: Bearer $TOKEN"
# 3) Tercera página de 1000, dos comitentes
curl -s 'https://auditium.com.ar/ruc/api/asignaciones_personal?id_comitente=9999,9998&limit=1000&offset=2000' \
-H "Authorization: Bearer $TOKEN"
# 4) Cerrar sesión
curl -s -X POST https://auditium.com.ar/ruc/api/logout \
-H "Authorization: Bearer $TOKEN"