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

# 用户注册

通过 API 以编程方式创建一个新的用户账户。

通过 API 以编程方式创建一个新的用户账户。此 mutation 将配置一个完整的用户，包括账户、网络席位、余额以及推荐功能。

<Warning>
  **受限访问**

  此端点需要 Fluz 的特殊权限。请联系您的客户经理，为您的应用启用用户注册功能。
</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 />

### 参数

| 参数           | 类型     | 是否必填 | 描述                                                      |
| :----------- | :----- | :--- | :------------------------------------------------------ |
| firstName    | String | 是    | 用户的名字                                                   |
| lastName     | String | 是    | 用户的姓氏                                                   |
| phoneNumber  | String | 是    | 用户的电话号码（接受数字和 `-`）。例如，`"5551234567"` 或 `"555-123-4567"` |
| regionCode   | String | YES  | 该电话号码的 ISO 3166-1 alpha-2 国家代码（例如，`"US"`、`"CA"`）        |
| emailAddress | String | 是    | 用户的电子邮箱地址                                               |
| dateOfBirth  | String | 是    | 用户的出生日期，格式为 `YYYY-MM-DD`                                |

<br />

### 响应

#### 成功响应

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

<br />

### 响应字段

| 字段        | 类型                | 描述                                                  |
| :-------- | :---------------- | :-------------------------------------------------- |
| `success` | Boolean           | 如果用户注册成功则为 `true`                                   |
| `error`   | RegisterUserError | 如果 `success` 为 false，将返回包含 `message` 和 `code` 的错误对象 |

<br />

> 注意：此 mutation 将错误放在响应数据中返回，而不是作为 GraphQL 错误返回。请始终检查 success 字段，并在 success 为 false 时处理错误对象。

### 示例请求

```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);
}
```

### 错误代码

| 代码          | 消息                                                         | 描述                            |
| :---------- | :--------------------------------------------------------- | :---------------------------- |
| `AUTH-0004` | Invalid phone number                                       | 电话号码格式无效，或无法根据给定的地区代码解析。      |
| `AUTH-0022` | Registration not allowed, please contact customer support! | 您的应用无权注册用户。请联系 Fluz 支持以启用此功能。 |
| `AUTH-0025` | Please try again or contact support.                       | 发生一般性注册失败。请重试或联系支持。           |
| `AUTH-0026` | The phone number you chose is already in use.              | 该电话号码已与现有账户关联。                |
| `AUTH-0027` | The email address you chose is already in use.             | 该电子邮箱地址已与现有账户关联。              |
| `AUTH-0030` | Your application is not active.                            | 您的应用未激活，无法注册用户。               |

<br />
