Ir al contenido

HTTP PATCH

Tipo: http-patch  ·  Paquete: HTTP Activities v1.0.5  ·  Salida: ZoanHttpResponse

Envía una petición PATCH para actualizar parcialmente un recurso: solo mandas los campos que cambian, no el objeto completo. Es la forma más cómoda de modificar un dato puntual — cambiar un estado, actualizar un teléfono — sin reenviar todo el registro.

Igual que PUT, pero envías solo los campos a modificar en el body. La API actualiza esos campos y deja el resto intacto. Devuelve un ZoanHttpResponse.

  • Cuerpo: con el contentType por defecto (application/json) el body se convierte a JSON; con otro contentType (por ejemplo application/merge-patch+json o application/json-patch+json, si la API lo exige) se envía como texto, así que en ese caso pásalo ya serializado con toJson(cambios). Ver cuerpo y Content-Type.
  • Códigos de respuesta: con 2xx termina bien; cualquier otro código hace fallar la actividad — ver qué códigos hacen fallar la actividad.
  • Tiempos: 30 s para conectar y, por defecto, 5 min para la petición completa (parámetro timeout). Si se agotan, la actividad falla con un error normal que Try / Catch y Retry capturan — ver tiempos de espera.
ParámetroTipoPor defectoDescripción
urlstring—URL absoluta del recurso a actualizar.
bodyobject—Solo los campos que cambian: diccionario (→ JSON) o texto (para otros contentType). Con contentType JSON, un texto se envía como cadena JSON; si tienes JSON en un texto, usa parseJson(texto).
ParámetroTipoPor defectoDescripción
contentTypestring"application/json"Tipo de medio del cuerpo, sin parámetros. Solo los valores que contienen application/json convierten el body a JSON. charset=utf-8 se agrega solo.
headersDictionary—Cabeceras extra (nombre → valor), en el editor JSON. Las cabeceras de contenido se ignoran. Ver cabeceras.
authorizationDictionary—Autenticación en el editor JSON: bearer, basic o apikey. Ver autenticación.
timeoutint300Segundos que se espera la petición completa (conexión, envío y respuesta); máximo 3600, admite decimales (0.5). Desde la versión 1.0.5. Ver tiempos de espera.

Devuelve un ZoanHttpResponse con .StatusCode (2xx, típicamente 200 o 204), .Ok (siempre true en una salida recibida), .Body (muchas APIs devuelven el recurso ya actualizado; JSON → diccionario/lista, otra cosa → texto, vacío → "") y .Headers.

MensajeCausa y solución
El servidor respondió HTTP 422 (Unprocessable Entity) a la solicitud PATCH.El servidor respondió con un código fuera de 2xx (422/400 datos inválidos, 404, 405 si la API no admite PATCH, 5xx). Maneja los esperables con Try / Catch.
The format of value 'application/json; charset=utf-8' is invalid.contentType lleva parámetros. Deja solo el tipo de medio.
No such host is known. (u otro error de red del sistema)No hubo respuesta. error.Type es "HttpRequestException".
La solicitud PATCH a api.ejemplo.com no terminó en 300 s (tiempo de espera agotado). Sube «Tiempo de espera» si el servicio tarda más.El servidor no respondió dentro de timeout. error.Type es \"TimeoutException\": captúralo con Try / Catch o reintenta con Retry; si la API tarda por naturaleza, sube timeout. Si el fallo es al conectar, el mensaje dice No se pudo conectar con … en 30 s.
An invalid request URI was provided. Either the request URI must be an absolute URI or BaseAddress must be set.La url no es absoluta. Incluye https://.
'url' es obligatorio.La expresión de url dio nulo.

Cambiar solo el estado de un pedido y leer el estado que confirma la API:

HTTP PATCH
url = "https://api.erp.com/pedidos/" + pedidoId
body = new Dictionary<string, object> { ["estado"] = "despachado" }
authorization = { "type": "bearer", "token": credential("api-erp")["value"] }
→ output: resp
Log message = "Pedido " + pedidoId + " ahora está: " + resp.Body["estado"]