# База клиентов

## Получение информации о госте (баланс бонусов или порядковый номер стакана по акции) по номеру телефона или номеру карты

<mark style="color:green;">`POST`</mark> `https://api.ytimes.ru/ex/client/loadClientInfo`

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Ключ авторизации |

#### Request Body

| Name                                        | Type   | Description                                                                                                      |
| ------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------- |
| json body<mark style="color:red;">\*</mark> | string | <p>{<br>   "cardNumber" : 45<br>}<br><br>или<br><br>{<br>  "phoneCode": "7",<br>  "phone": "9001112233"<br>}</p> |

{% tabs %}
{% tab title="200 Если гость существует, то вернется информация о нем, если же гость не существует, вернется пустой результат.

В примере ниже у гостя 45.5 накопленных бонусов и 7 купленных стаканов по акции (то есть следующий стакан будет 8-й)" %}

```javascript
{
  "success": true,
  "count": 1,
  "rows": [{
    //сколько уже заказано стаканов по акции
    "orderPromoCount": 7,
    //сколько бесплатных стаканов у гостя было накоплено ранее и не потрачено
    "orderPromoFreeCount": 0,
    //количество накопленных бонусов
    "points": 45.5
  }],
  "error": null
}
```

{% endtab %}
{% endtabs %}

## Создание гостя в базе и пополнение ему баланса

<mark style="color:green;">`POST`</mark> `https://api.ytimes.ru/ex/client/createClientAndAddPoints`

Возможность создать гостя в базе и пополнить ему баланс. Если при вызове метода гость уже существует в базе, то только пополнится баланс на указанную сумму.\
\
Обязательные поля только phoneCode, phone, то есть телефон для идентификации пользователя.

Поле requestId определяет ключ идемпотентности, чтобы предотвратить повторное срабатывание. Несколько запросов с одинаковым requestId сработают только один раз.\
\
В поле value передаем количество бонусов, на которые нужно пополнить баланс гостя (или уменьшить, если передать со знаком минус).\
\
Так же обратите внимание, что на своей стороне необходимо предусмотреть процесс идентификации гостя (подтверждения телефона) например через СМС, чтобы убедиться, что гость указал именно свой телефон на вашем ресурсе.<br>

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Authorization<mark style="color:red;">\*</mark> | string | Ключ авторизации |

#### Request Body

| Name                                        | Type   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| json body<mark style="color:red;">\*</mark> | string | <p>{<br>   "requestId": UUID,<br>   "phoneCode": "7",<br>   "phone": "9001112233",<br>   "name": "Никита",<br>   "surname": "Иванов",<br>   "email": "<some@email.ru>",<br>   "birthday": "10.01.2000",<br>   "sex": "MALE",<br>   "isAgreeToNotification": false,<br>   "comment": "комментарий к карте гостя",<br>   "sourceId":  null,   //ID источника гостя для статистики (опционально)<br>   "value": 100,<br>   "valueComment": "за регистрацию" (опционально)<br>}</p> |

{% tabs %}
{% tab title="200 Если запрос выполнился успешно, в ответе будет success: true, иначе сообщение об ошибке" %}

```javascript
{
  "success": true,
  "count": 0,
  "rows": [],
  "error": null
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ytimes-2.gitbook.io/ytimes-kafe/integracii/vneshnii-api/baza-klientov.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
