> ## 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.

# Obtener cliente

> Recupera el perfil del cliente autenticado.

Devuelve el registro del cliente para el `id` externo indicado. El access token solo permite acceder al cliente vinculado al claim OIDC `sub`, por lo que `id` debe coincidir con el id del token.

> [!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 ruta

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

## Solicitud

```bash theme={null}
curl "https://firespark.cloud/api/storefront/v1/customers/auth0|abc123" \
  -H "Authorization: Bearer ACCESS_TOKEN"
```

## Respuesta

La respuesta envuelve un objeto cliente en `data`. Las respuestas de Storefront no incluyen campos internos como `birthday`.

```json Success theme={null}
{
  "data": {
    "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "merchant_id": "22222222-2222-2222-2222-222222222222",
    "id": "auth0|abc123",
    "name": "Juan Pérez",
    "email": "juan@example.com",
    "status": "ACTIVE",
    "is_anonymous": false,
    "email_verified": false,
    "phone_verified": false,
    "phone": "+593991234567",
    "registration_date": "2026-01-15T10:30:00Z",
    "gender": "MALE",
    "dob": "1990-05-20T00:00:00Z",
    "document_type": "CI",
    "document_number": "1712345678",
    "country": "EC",
    "delivery_addresses": [
      {
        "alias": "Casa",
        "address_line1": "Av. Amazonas 123",
        "address_line2": "Depto 4B",
        "city": "Quito",
        "state": "Pichincha",
        "zip": "170150",
        "country": "EC",
        "reference": "Cerca del parque",
        "latitude": -0.1807,
        "longitude": -78.4678,
        "instructions": "Tocar el timbre",
        "preferred": true,
        "metadata": null
      }
    ],
    "billing_profiles": [
      {
        "alias": "Personal",
        "type": "INDIVIDUAL",
        "legal_name": "Juan Pérez",
        "address_line1": "Av. Amazonas 123",
        "city": "Quito",
        "country": "EC",
        "tax_id": "1712345678",
        "tax_id_type": "CI",
        "preferred": true,
        "metadata": null
      }
    ],
    "devices": [
      {
        "id": "iphone-15-pro",
        "os": "IOS",
        "fcm_token": "fcm-token-abc123",
        "created_at": "2026-01-10T08:00:00Z",
        "updated_at": "2026-01-15T10:30:00Z"
      }
    ],
    "consent": {
      "marketing": true
    },
    "notification_preferences": {
      "email": true,
      "push": true,
      "push_token": "ExponentPushToken[abc]",
      "push_token_expires_at": "2026-12-15T00:00:00Z"
    },
    "metadata": {}
  }
}
```

## Campos del cliente

| Campo | Requerido | Tipo | Descripción |
| - | - | - | - |
| `uid` | Sí | uuid | Identificador interno de Fire spark. |
| `merchant_id` | Sí | uuid | Identificador de comercio en Fire spark. |
| `id` | Sí | string | Tu identificador externo del cliente. |
| `name` | Sí | string | Nombre completo. |
| `email` | Sí | string \ \| null | Correo electrónico. Null para clientes anónimos. |
| `status` | Sí | string | `ACTIVE` o `INACTIVE`. |
| `is_anonymous` | Sí | boolean | Si es un cliente invitado. |
| `email_verified` | Sí | boolean | Si el correo está verificado. |
| `phone_verified` | Sí | boolean | Si el teléfono está verificado. |
| `gender` | No | string \ \| null | `MALE`, `FEMALE` u `OTHER`. |
| `dob` | No | datetime \ \| null | Fecha de nacimiento (ISO 8601 con offset). |
| `document_type` | No | string \ \| null | Tipo de documento de identidad. |
| `document_number` | No | string \ \| null | Número de documento de identidad. |
| `country` | No | string \ \| null | País del cliente. |
| `phone` | Sí | string \ \| null | Teléfono en formato internacional. |
| `registration_date` | Sí | datetime | Fecha de registro del cliente. |
| `delivery_addresses` | No | array | Direcciones de entrega guardadas (máx. 10). |
| `billing_profiles` | No | array | Perfiles de facturación (máx. 10). |
| `devices` | No | array | Dispositivos push (máx. 10). |
| `consent` | No | object \ \| null | Consentimiento de marketing. |
| `notification_preferences` | No | object | Preferencias de entrega de email y push. |
| `metadata` | No | object \ \| null | Metadatos personalizados (máx. 1MB serializado). |

### Dirección de entrega

| Campo | Requerido | Tipo | Descripción |
| - | - | - | - |
| `alias` | Sí | string | Etiqueta como "Casa" u "Oficina". |
| `address_line1` | Sí | string | Dirección principal. |
| `address_line2` | No | string | Apartamento, piso o suite. |
| `city` | No | string | Ciudad. |
| `state` | No | string | Estado o provincia. |
| `zip` | No | string | Código postal. |
| `country` | No | string | País. |
| `reference` | No | string | Punto de referencia. |
| `latitude` | No | number | Latitud entre -90 y 90. |
| `longitude` | No | number | Longitud entre -180 y 180. |
| `instructions` | No | string | Instrucciones de entrega. |
| `preferred` | No | boolean | Dirección predeterminada. Por defecto `false`. Solo una puede ser preferred. |
| `metadata` | No | object \ \| null | Metadatos personalizados de esta dirección. |

### Perfil de facturación

| Campo | Requerido | Tipo | Descripción |
| - | - | - | - |
| `alias` | Sí | string | Etiqueta como "Personal" o "Empresa". |
| `type` | Sí | string | `INDIVIDUAL` o `BUSINESS`. |
| `legal_name` | Sí | string | Nombre legal para facturación. |
| `address_line1` | Sí | string | Dirección de facturación principal. |
| `address_line2` | No | string | Línea adicional de dirección. |
| `city` | No | string | Ciudad. |
| `state` | No | string | Estado o provincia. |
| `zip` | No | string | Código postal. |
| `country` | No | string | País. |
| `tax_id` | Sí | string | Valor del identificador fiscal. |
| `tax_id_type` | Sí | string | Uno de `VAT`, `EIN`, `SSN`, `TIN`, `NIF`, `CUIT`, `RUT`, `NIT`, `RCN`, `RUC`, `CI`, `DNI`, `PASSPORT` u `OTHER`. |
| `preferred` | No | boolean | Perfil predeterminado. Por defecto `false`. Solo uno puede ser preferred. |
| `metadata` | No | object \ \| null | Metadatos personalizados de este perfil. |

### 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 | Fecha de registro del dispositivo. |
| `updated_at` | Sí | datetime | Última actualización del dispositivo. |

### Consentimiento

Solo opt-in de marketing. Los mensajes transaccionales (por ejemplo, un pedido cerca) no requieren este flag; solo necesitan el canal en `notification_preferences`. Los mensajes de marketing necesitan el canal y `consent.marketing`.

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

### Preferencias de notificación

| Campo | Tipo | Por defecto | Descripción |
| - | - | - | - |
| `email` | boolean | `true` | Recibir correos |
| `push` | boolean | `true` | Recibir notificaciones push |
| `push_token` | string | — | Token de notificaciones push. Solo aparece junto con `push_token_expires_at`. |
| `push_token_expires_at` | datetime | — | Solo aparece junto con `push_token`. |

## Errores

| Estado | Descripción |
| - | - |
| `401` | Access token ausente o inválido. |
| `403` | El `id` no coincide con el id del token. |
| `404` | No se encontró un cliente con ese `id`. |


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