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

# Registro de usuario

Crea una nueva cuenta de usuario de forma programática vía la API.

Crea una nueva cuenta de usuario de forma programática vía la API. Esta mutación aprovisiona un usuario completo con cuenta, asiento en la red, balances y capacidades de referidos.

<Warning>
  **Acceso restringido**

  Este endpoint requiere un permiso especial de Fluz. Ponte en contacto con tu gerente de cuenta para habilitar el registro de usuarios para tu aplicación.
</Warning>

```graphql theme={null}
mutation RegisterUser(
  $firstName: String!
  $lastName: String!
  $phoneNumber: String!
  $regionCode: String!
  $emailAddress: String!
  $dateOfBirth: String!
) {
  registerUser(
    firstName: $firstName
    lastName: $lastName
    phoneNumber: $phoneNumber
    regionCode: $regionCode
    emailAddress: $emailAddress
    dateOfBirth: $dateOfBirth
  ) {
    success
    error
  }
}
```

<br />

### Parámetros

| Parámetro    | Tipo   | Requerido | Descripción                                                                                             |
| :----------- | :----- | :-------- | :------------------------------------------------------------------------------------------------------ |
| firstName    | String | Sí        | El nombre del usuario                                                                                   |
| lastName     | String | Sí        | El apellido del usuario                                                                                 |
| phoneNumber  | String | Sí        | El número de teléfono del usuario (se aceptan dígitos y `-`). p. ej., `"5551234567"` o `"555-123-4567"` |
| regionCode   | String | SÍ        | Código de país ISO 3166-1 alfa-2 para el número de teléfono (p. ej., `"US"`, `"CA"`)                    |
| emailAddress | String | Sí        | La dirección de correo electrónico del usuario                                                          |
| dateOfBirth  | String | Sí        | La fecha de nacimiento del usuario en formato `YYYY-MM-DD`                                              |

<br />

### Respuesta

#### Respuesta exitosa

```json theme={null}
{
  "data": {
    "registerUser": {
      "success": true,
      "error": null
    }
  }
}
```

<br />

### Campos de la respuesta

| Campo     | Tipo              | Descripción                                                                               |
| :-------- | :---------------- | :---------------------------------------------------------------------------------------- |
| `success` | Boolean           | `true` si el usuario fue registrado correctamente                                         |
| `error`   | RegisterUserError | Si `success` es false, devolverá un objeto de Error que contiene el `message` y el `code` |

<br />

> Nota: Esta mutación devuelve errores en los datos de la respuesta, no como errores de GraphQL. Revisa siempre el campo success y maneja el objeto de error cuando success sea false.

### Ejemplo de solicitud

```curl theme={null}
curl -X POST https://transactional-graph.staging.fluzapp.com/api/v1/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_access_token>" \
  -d '{
  "query": "mutation RegisterUser($firstName: String!, $lastName: String!, $phoneNumber: String!, $regionCode: String!, $emailAddress: String!, $dateOfBirth: String!) { registerUser(firstName: $firstName, lastName: $lastName, phoneNumber: $phoneNumber, regionCode: $regionCode, emailAddress: $emailAddress, dateOfBirth: $dateOfBirth) { success error { code message } } }",
  "variables": {
    "firstName": "Jane",
    "lastName": "Doe",
    "phoneNumber": "5551234567",
    "regionCode": "US",
    "emailAddress": "jane.doe@example.com",
    "dateOfBirth": "1990-05-15"
  }
}'
```

```typescript theme={null}
const response = await fetch('https://transactional-graph.staging.fluzapp.com/api/v1/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${accessToken}`
  },
  body: JSON.stringify({
    query: `
      mutation RegisterUser(
        $firstName: String!
        $lastName: String!
        $phoneNumber: String!
        $regionCode: String!
        $emailAddress: String!
        $dateOfBirth: String!
      ) {
        registerUser(
          firstName: $firstName
          lastName: $lastName
          phoneNumber: $phoneNumber
          regionCode: $regionCode
          emailAddress: $emailAddress
          dateOfBirth: $dateOfBirth
        ) {
          success
          error {
            code
            message
          }
        }
      }
    `,
    variables: {
      firstName: "Jane",
      lastName: "Doe",
      phoneNumber: "5551234567",
      regionCode: "US",
      emailAddress: "jane.doe@example.com",
      dateOfBirth: "1990-05-15"
    }
  })
});

const data = await response.json();

if (data.data.registerUser.success) {
  console.log('User registered successfully!');
} else {
  console.error('Registration failed:', data.data.registerUser.error);
}
```

### Códigos de error

| Código      | Mensaje                                                    | Descripción                                                                                                                     |
| :---------- | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| `AUTH-0004` | Invalid phone number                                       | El formato del número de teléfono no es válido o no se puede analizar con el código de región proporcionado.                    |
| `AUTH-0022` | Registration not allowed, please contact customer support! | Tu aplicación no tiene permiso para registrar usuarios. Ponte en contacto con el soporte de Fluz para habilitar esta capacidad. |
| `AUTH-0025` | Please try again or contact support.                       | Ocurrió una falla general en el registro. Intenta nuevamente o contacta al soporte.                                             |
| `AUTH-0026` | The phone number you chose is already in use.              | El número de teléfono ya está asociado a una cuenta existente.                                                                  |
| `AUTH-0027` | The email address you chose is already in use.             | La dirección de correo electrónico ya está asociada a una cuenta existente.                                                     |
| `AUTH-0030` | Your application is not active.                            | Tu aplicación no está activa y no puede registrar usuarios.                                                                     |

<br />
