Árbol del API · Clientes › upsertCustomerAddress
Registrar o actualizar un lugar de entrega
upsertCustomerAddress
Tipo
Mutation
Devuelve
Permiso de la llave
Creacion de Cliente
Reintentos
Seguros con idempotencyKey
Registra un lugar de entrega nuevo para un cliente o actualiza uno que ya tiene, y devuelve el lugar de entrega como quedó.
Con el id que devuelve, el lugar de entrega queda disponible para las
órdenes del cliente: aparece en addresses de
orderDefaults y se envía en
addressId al crear la orden con createOrder.
Al actualizar, envía otra vez todos los datos obligatorios, no sólo los que
cambian. Si omites interiorNumber, se conserva el que tenía.
El lugar de entrega que devuelve trae la clave, la calle, la ciudad, el
estado y el código postal. El número exterior e interior, la colonia, el
municipio, el país y la descripción se guardan, pero
CustomerAddress no los
devuelve.
Reintentos seguros
Si la conexión se corta y no sabes si el cambio se guardó, repite la petición
con la misma idempotencyKey, la misma llave y exactamente el mismo
input: recibes el lugar de entrega como está en ese momento, sin
duplicarlo. Una clave repetida con datos distintos responde CONFLICT; un
dato omitido y uno enviado en null cuentan como distintos. Si la petición se rechazó por un dato
inválido, la clave no queda usada. Las claves se recuerdan alrededor de 30
días.
upsertCustomerAddress( input: CustomerAddressInput! idempotencyKey: String! ): UpsertCustomerAddressPayload
Argumentos
2
| Argumento | Tipo | Descripción |
|---|---|---|
| Lugar de entrega | ||
inputCustomerAddressInput! |
CustomerAddressInput! | Los datos del lugar de entrega. Con |
| Reintentos | ||
idempotencyKeyString! |
String! | Clave única que generas por cada registro o cambio, por ejemplo un UUID, de hasta 200 caracteres. Si repites la petición con la misma clave y los mismos datos, recibes el lugar de entrega que ya se guardó en lugar de otro nuevo. Obligatorio. |
Lo que devuelve
UpsertCustomerAddressPayload
Campos principales de UpsertCustomerAddressPayload:
| Campo | Tipo | Descripción |
|---|---|---|
addressCustomerAddress |
CustomerAddress | El lugar de entrega como quedó guardado; null si hubo errores. |
errors[FieldError!]! |
[FieldError!]! | Errores de los datos, cada uno con el dato que lo causó. Lista vacía si se guardó. |
Permisos
Llave API Integraciones
La llave ve los registros de toda la empresa del subdominio.
Sin el permiso HTTP 422
La respuesta es HTTP 422 con el cuerpo {"error": "invalid_graphql_request"}, sin data.
Errores
| Código | Cuándo ocurre | Qué hacer |
|---|---|---|
| HTTP 401 | Falta el header Authorization o la llave no existe en la empresa del subdominio. La respuesta no trae cuerpo. | Revisa la llave y el subdominio. No reintentes. |
| HTTP 422 | La llave no tiene «Creacion de Cliente». La respuesta es HTTP 422 con el cuerpo {"error": "invalid_graphql_request"}, sin data. | La llave necesita ese permiso; reintentar no ayuda. |
VALIDATION | Un dato obligatorio llega vacío, o la idempotencyKey está vacía o pasa de 200 caracteres. Llega en upsertCustomerAddress.errors con el dato en field (por ejemplo exteriorNumber o idempotencyKey) y address llega null. | Corrige el dato y vuelve a enviar. |
NOT_FOUND | El cliente no existe, o input.id no es un lugar de entrega de ese cliente. Llega en errors de la respuesta. | Revisa customerId e input.id. |
CONFLICT | La idempotencyKey ya se usó con otros datos. | Para otros datos usa otra clave. |
| HTTP 422 | Falla interna o dato rechazado al guardar. El cuerpo es {"error": …}, sin data. | Si no cambiaste nada, reintenta con la misma idempotencyKey. |
Los errores de la consulta llegan con HTTP 200 en errors, con su código en extensions.code. Revisa siempre errors, no sólo el estatus HTTP. Errores y reintentos.