Saltar al contenido principal

Actualizaciones parciales

Todos los endpoints PUT de la API siguen un patrón de actualización parcial — enviá solo los campos que querés cambiar, no el recurso completo.

A diferencia de la semántica PUT estándar

En REST tradicional (RFC 7231), PUT reemplaza el recurso completo. El PUT de GeoTareas se comporta como un merge/patch — los campos omitidos conservan su valor actual. Este diseño evita la pérdida accidental de datos cuando solo necesitás cambiar uno o dos campos.

Cómo funciona

  1. Enviá solo los campos que querés cambiar — los campos omitidos conservan su valor actual.
  2. Enviá null para vaciar un campo — esto establece el valor en NULL en la base de datos.
  3. El ID del recurso va en la URL, nunca en el cuerpo — incluir id en el cuerpo devuelve un VALIDATION_ERROR.
  4. Las mismas validaciones que POST — las restricciones de campo (tipo, formato, requerido) aplican por igual a las actualizaciones. Un email inválido se rechaza tanto al crear como al actualizar.
  5. Los campos de solo lectura se ignoran — si enviás un campo que no es editable (ej. createdAt, id), el servidor lo ignora silenciosamente. No se genera ningún error, pero el campo no se modifica.

Ejemplos

Actualizar un solo campo

curl -s -X PUT \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{"email":"new@example.com"}' \
"https://$TENANT/apidev/v1/clients/104820579301"

Solo cambia email. Nombre, teléfono, dirección — todo lo demás queda como está.

Respuesta:

{
"success": true,
"data": {
"id": "104820579301",
"updated_fields": ["email"]
}
}

Actualizar varios campos a la vez

PUT /apidev/v1/clients/104820579301
Content-Type: application/json

{
"email": "new@example.com",
"phone": "+5491155551234",
"address": "Av. Corrientes 1234, CABA"
}

Respuesta:

{
"success": true,
"data": {
"id": "104820579301",
"updated_fields": ["email", "phone", "address"]
}
}

Vaciar un campo con null

Para eliminar explícitamente un valor, enviá null:

PUT /apidev/v1/clients/104820579301
Content-Type: application/json

{
"phone": null
}

El campo phone se establece en NULL en la base de datos. Todos los demás campos quedan sin cambios.

Respuesta:

{
"success": true,
"data": {
"id": "104820579301",
"updated_fields": ["phone"]
}
}
Diferencia entre omitir y enviar null
  • Omitir un campo: el campo conserva su valor actual (sin cambio)
  • Enviar null: el campo se vacía explícitamente (se establece en NULL)

No son lo mismo. {} no cambia nada; {"phone": null} borra el número de teléfono.

Formato de respuesta

Todos los endpoints PUT devuelven una respuesta consistente que indica qué campos fueron efectivamente modificados:

CampoTipoDescripción
successbooleantrue si la actualización se completó sin errores
data.idstringEl ID del recurso actualizado
data.updated_fieldsarrayLista de nombres de campos que fueron modificados
tip

Usá updated_fields para confirmar que tu actualización se aplicó. Si un campo que enviaste falta en esta lista, el nuevo valor era idéntico al existente — no hizo falta ningún cambio.

Errores comunes

ErrorQué sucedeSolución
Enviar id en el cuerpoVALIDATION_ERRORPoné el ID solo en el path de la URL
Enviar un formato de email inválidoVALIDATION_ERROR — las mismas validaciones que POSTRevisá las restricciones de campo en la documentación del endpoint
Omitir un campo para "vaciarlo"No pasa nada — el campo conserva su valor actualEnviá null explícitamente para vaciarlo
Enviar el recurso completo de un GETFunciona, pero arriesga sobrescribir cambios concurrentesEnviá solo los campos que pretendés cambiar