Skip to content

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
HeaderRequeridoDescripción
AuthorizationSíBearer <token> (ver)

Parámetros ​

ParámetroTipoRequeridoDescripción
id_comitentestringSíUno o varios IDs separados por coma (9999 o 9999,9998). Sólo enteros positivos.
incluirstringNoÚnico valor admitido: estado_requisitos. Agrega a cada registro qué requisitos adeuda.
requiere_presentarintNo1 devuelve sólo los recursos que adeudan al menos un requisito. Requiere incluir=estado_requisitos.
limitintNoMáximo de registros. Predeterminado y máximo: 5000, y 500 con incluir.
offsetintNoRegistros 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:

CampoQué es
limitEl límite efectivo de esta respuesta
offsetDesde qué registro arranca
countCuántos registros trae esta página
totalCuá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')
done

Detectar 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" }
  ]
}
CampoTipoDescripción
data[].cuilstringCUIL
data[].dnistringNúmero de documento
data[].apellidostringApellido
data[].nombrestringNombre
data[].id_contratistaintContratista al que pertenece el recurso. Es el id_contratista que pide POST /presentaciones
data[].id_comitenteintComitente de la asignación
paginado.limitintLímite aplicado
paginado.offsetintDesplazamiento aplicado
paginado.countintRegistros en esta página
paginado.totalintRegistros disponibles en total

Qué adeuda cada recurso ​

GET /ruc/api/asignaciones_personal?id_comitente=9999&incluir=estado_requisitos

Cada 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
    }
  ]
}
CampoTipoDescripción
id_requisitointEl que se usa como id_requisito al presentar
requisitostringNombre del requisito
requiere_presentarbooltrue cuando hay que presentar
vence_eldate | nullVencimiento 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=1

Devuelve ú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  → fin

Mientras 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ódigotypeCaso
400parametro-requeridoFalta id_comitente
400parametro-invalidoid_comitente, limit, offset, incluir o requiere_presentar con valor no válido, o requiere_presentar sin incluir=estado_requisitos
401credenciales-ausentes / credenciales-invalidasToken ausente, inválido o vencido
403ambito-insuficienteAlgú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"

Documentación pública de la API Auditium · Generada con VitePress + Scalar.