Skip to main content
PATCH
Cambiar los datos de un cliente

Authorizations

Authorization
string
header
required

Clave del negocio. sk es una clave completa (todo lo que el rol de quien la creó puede dar) y rk una restringida a los permisos que se eligieron al crearla. Solo se usa desde un servidor: un pedido desde un navegador se rechaza con browser_not_allowed.

Scopes

clients:write

Crear, cambiar, dar de baja y reactivar clientes.

Headers

Craqui-Version
string

Versión de la API para este pedido (YYYY-MM-DD). Si no la mandas, se usa la versión fijada en la clave cuando se creó.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-12-01"

Idempotency-Key
string

Obligatorio en todo pedido que crea o cambia algo, salvo con dry_run=true. Un valor único por operación (por ejemplo un UUID). Si repites el pedido con la misma clave y el mismo cuerpo dentro de 24 horas, recibes la misma respuesta (con el header Idempotent-Replayed: true) sin que se repita el efecto, también la misma respuesta de error: para intentar de nuevo algo que se rechazó, usa una clave nueva. Con un dry_run=true la clave se ignora y no se guarda: el pedido real puede usar la misma. Pasadas las 24 horas, repetir una reserva con la misma clave y el mismo cuerpo sigue devolviendo la reserva que se hizo (como está ahora), y la misma clave con otro cuerpo responde idempotency_key_reused.

Required string length: 1 - 255
If-Match
string

El ETag que recibiste al leer el cliente (GET /v1/clients/{id}, o la respuesta de tu última escritura). Con él, el cambio se aplica solo si el cliente sigue igual; si cambió, la respuesta es 412 precondition_failed y no se cambia nada. Sin él, el cambio se aplica sobre lo que haya.

Maximum string length: 200

Path Parameters

id
string
required

El id del cliente (cli_…). Id de un cliente del estudio.

Pattern: ^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"cli_01jatfha5h4nkg77c3wfrvd3cw"

Query Parameters

dry_run
boolean

true para ver qué pasaría sin hacerlo: Craqui evalúa el pedido con las mismas reglas que el real y responde 200 con un objeto preview, sin escribir nada ni avisarle a nadie. Cuenta para el límite de escrituras. false (o sin el parámetro) hace el pedido real. Es el único parámetro de consulta de una escritura.

Body

application/json

Solo los campos que cambias. El email no se cambia por la API. Si el cliente también está en otro negocio de Craqui, su nombre y su teléfono no se cambian (409 profile_shared_with_other_business, sin cambiar nada); la sede y metadata sí.

first_name
string
Required string length: 1 - 200
last_name
string | null
Maximum string length: 200
phone
string | null

Como al dar de alta. null lo borra, si el cliente tiene email.

Maximum string length: 30
phone_country_code
string | null
Maximum string length: 10
center_id
string | null

La sede habitual; null lo deja sin sede.

Pattern: ^ctr_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"ctr_01j65pdnq74qvnh0953pzvtczg"

metadata
object

Se combina con la metadata guardada: una clave con texto la agrega o la reemplaza, una clave con null la borra y las demás quedan como estaban. El resultado tiene hasta 20 claves.

Response

El cliente como queda, o con dry_run=true la vista previa (no se escribió nada).

Lo que haría un alta o un cambio de un cliente, sin hacerlo. Craqui lo evalúa con las mismas reglas que el pedido real: si el real se rechazaría, la vista previa responde el mismo error.

object
string
required
Allowed value: "preview"
livemode
boolean
required

false si la vista previa es de tu estudio de prueba (claves crq_test_); true con claves crq_live_.

action
enum<string>
required

client.create o client.update. La lista puede crecer.

Available options:
client.create,
client.update
result
object
required

El cliente como quedaría. En un alta nueva, id es null. En el alta de alguien que ya está en el estudio con otro rol, sus datos no cambian y no se muestran (first_name y last_name en null). El email y el teléfono, solo en un cambio y con clients.pii:read.

effects
object
required

Lo que la escritura de un cliente haría.

warnings
enum<string>[]
required

Lo que conviene saber, como códigos: already_client (ya es cliente del estudio: el alta no cambia nada), existing_person (ya está en el estudio con otro rol: pasa a ser cliente, con sus datos como están) y no_change (el cambio no cambia nada). La lista puede crecer.

Available options:
already_client,
existing_person,
no_change
summary
string
required

Lo mismo en una frase en español, para mostrarle a una persona. No nombra al cliente.