> ## Documentation Index
> Fetch the complete documentation index at: https://firespark.cloud/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Actualizar cliente

> Actualiza el perfil, el consentimiento de marketing, las preferencias de notificación o los dispositivos push del cliente autenticado.

Actualiza el registro del cliente para el `id` externo indicado. Envía solo los campos que quieras cambiar. Los campos de primer nivel omitidos conservan su valor actual.

Usa este endpoint para actualizar datos de perfil, consentimiento de marketing, preferencias de notificación y la lista de dispositivos push. Para leer el cliente, usa [obtener cliente](https://firespark.cloud/docs/es/storefront-api/customers/\[id]/get).

> [!NOTE]
>
> Requiere un access token de Fire spark obtenido mediante [intercambio de
> token](https://firespark.cloud/docs/es/storefront-api/oauth/exchange/post.md).

## Parámetros de path

| Parámetro | Requerido | Descripción |
| - | - | - |
| `id` | Sí | Identificador externo del cliente. Debe coincidir con el customer id del token. |

## Cuerpo de la solicitud

| Campo | Requerido | Descripción |
| - | - | - |
| `name` | No | Nombre completo. |
| `gender` | No | `MALE`, `FEMALE` u `OTHER`. |
| `dob` | No | Fecha de nacimiento (ISO 8601 con offset). No se puede cambiar después de establecerse. |
| `document_type` | No | Tipo de documento de identidad. |
| `document_number` | No | Número de documento de identidad. |
| `country` | No | País del cliente. |
| `phone` | No | Teléfono en formato internacional. |
| `delivery_addresses` | No | Hasta 10 direcciones de entrega. Reemplaza la lista existente cuando se envía. Solo una puede tener `preferred: true`. |
| `billing_profiles` | No | Hasta 10 perfiles de facturación. Reemplaza la lista existente cuando se envía. Cada perfil requiere `type` (`INDIVIDUAL` o `BUSINESS`). Solo uno puede tener `preferred: true`. |
| `consent` | No | Consentimiento de marketing. Envía solo los flags que quieras cambiar; los omitidos conservan su valor actual. |
| `notification_preferences` | No | Preferencias de entrega de email y push. Envía solo los flags que quieras cambiar; los omitidos conservan su valor actual. |
| `devices` | No | Lista completa de dispositivos push (máx. 10). Reemplaza la lista existente cuando se envía. Para dar de baja un dispositivo, omítelo del array. |
| `metadata` | No | Metadatos personalizados. Debe serializar a 1MB o menos. |

`delivery_addresses`, `billing_profiles`, `devices`, `consent` y `notification_preferences` usan las mismas formas que [obtener cliente](https://firespark.cloud/docs/es/storefront-api/customers/\[id]/get).

Los mensajes transaccionales (por ejemplo, un pedido cerca) solo requieren el canal en `notification_preferences`. Los de marketing también requieren `consent.marketing`.

### Consentimiento

| Campo | Tipo | Descripción |
| - | - | - |
| `marketing` | boolean | Publicidad y promociones en cualquier canal |

### Preferencias de notificación

| Campo | Tipo | Descripción |
| - | - | - |
| `email` | boolean | Recibir correos |
| `push` | boolean | Recibir notificaciones push |
| `push_token` | string | Token de notificaciones push. Los valores omitidos conservan el token actual. Envía `null` para borrarlo. |
| `push_token_expires_at` | datetime | Obligatorio si se envía `push_token`. Debe ser una fecha futura y como máximo 180 días. Los valores omitidos conservan la fecha actual. Envía `null` para borrarla. |

### Dispositivo

| Campo | Requerido | Tipo | Descripción |
| - | - | - | - |
| `id` | Sí | string | Identificador externo del dispositivo. |
| `os` | Sí | string | `IOS`, `ANDROID` o `WEB`. |
| `fcm_token` | Sí | string | Token de Firebase Cloud Messaging. |
| `created_at` | Sí | datetime | Cuándo se registró el dispositivo. |
| `updated_at` | Sí | datetime | Cuándo se actualizó por última vez. |

## Solicitud

```bash theme={null}
curl -X PATCH "https://firespark.cloud/api/storefront/v1/customers/auth0|abc123" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+593991234567",
    "consent": {
      "marketing": true
    },
    "notification_preferences": {
      "email": true,
      "push": true,
      "push_token": "ExponentPushToken[abc]",
      "push_token_expires_at": "2026-12-15T00:00:00Z"
    },
    "devices": [
      {
        "id": "iphone-15-pro",
        "os": "IOS",
        "fcm_token": "fcm-token-abc123",
        "created_at": "2026-01-10T08:00:00Z",
        "updated_at": "2026-03-01T12:00:00Z"
      }
    ]
  }'
```

## Respuesta

Devuelve el objeto de cliente actualizado en `data`, con la misma forma que [obtener cliente](https://firespark.cloud/docs/es/storefront-api/customers/\[id]/get).

## Errores

| Status | Descripción |
| - | - |
| `400` | Cuerpo de solicitud inválido. |
| `401` | Access token ausente o inválido. |
| `403` | El `id` no coincide con el customer id del token. |
| `404` | No existe un cliente con el `id` indicado. |
| `422` | No se puede actualizar fecha de nacimiento o género si ya están definidos, o el payload de `devices` es inválido. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.