# User

{% hint style="warning" %}
**IMPORTANT!**

**Server Key ID** and **Server Key Secret** will be used to construct a request and add as a **HTTP Header**.\
To construct a request, please format your generated **Server Key ID** and **Server Key Secret** and wrap it to **Base64**, so the format will be like this:

**encodeToBase64(SERVER\_KEY\_ID:SERVER\_KEY\_SECRET)**\
\*don't forget to add colon (:) between Server Key ID and Server Key Secret

Then, put the base64 string on your **HTTP Header Field** with **key “Server-Key”** and then construct URL request and parameter for the request.
{% endhint %}

### Update User

Update a user's profile.

The `xcUserID` is used to identify an existing user. If it does not exist yet, the user will be saved as a new user.

{% tabs %}
{% tab title="POST" %}

```php
BASE_URL/v1/server/user/update

example:
https://taptalk.io/v1/server/user/update
```

{% endtab %}
{% endtabs %}

### Request

| **Field**                    | **Type** | **Description**                                                   |
| ---------------------------- | -------- | ----------------------------------------------------------------- |
| xcUserID                     | string   | (105) The user ID from customer's server (maximum 50 characters). |
| fullName                     | string   | (106) The user's full name.                                       |
| email (optional)             | string   | (107) The user's email address.                                   |
| phone (optional)             | string   | (108) The user's phone, should start with country code.           |
| username (optional)          | string   | (109) The user's username.                                        |
| photoThumbnailURL (optional) | string   | (110) The user's thumbnail picture image URL.                     |
| photoFullsizeURL (optional)  | string   | (111) The user's fullsize picture image URL.                      |
| userRoleCode (optional)      | string   | (112) The user's role code.                                       |

{% tabs %}
{% tab title="Request Example" %}

```javascript
{
    "xcUserID": "6",
    "fullName": "Jony",
    "email": "jony@email.com",
    "phone": "08991234567",
    "username": "jony",
    "photoThumbnailURL": "http://www.example.com/photo/thumb/6.jpg",
    "photoFullsizeURL": "http://www.example.com/photo/full/6.jpg",
    "userRoleCode": "user"
}
```

{% endtab %}
{% endtabs %}

### Success 200

| **Field** | **Type** | **Description** |
| --------- | -------- | --------------- |
| userID    | string   | The user ID.    |

{% tabs %}
{% tab title="Success Response" %}

```javascript
{
  "status": 200,
  "error": {
    "code": "",
    "message": "",
    "field": ""
  },
  "data": {
    "userID": "6"
  }
}
```

{% endtab %}
{% endtabs %}

### Error 4xx

| **Name**               | **Description**                       |
| ---------------------- | ------------------------------------- |
| ParamValidationFailed  | The parameter validation failed.      |
| HeaderValidationFailed | The request header validation failed. |

{% tabs %}
{% tab title="ParamValidationFailed" %}

```javascript
{
  "status": 400,
  "error": {
    "code": "40002",
    "message": "Param 'xcUserID' is required",
    "field": "105"
  },
  "data": {}
}
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="HeaderValidationFailed" %}

```javascript
{
  "status": 400,
  "error": {
    "code": "40001",
    "message": "Request headers are required (Server-Key)",
    "field": ""
  },
  "data": {}
}
```

{% endtab %}
{% endtabs %}
