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

# Пользователь

> Сущность пользователя

## Как получить данные авторизованного юзера

Получить данные юзера можно с помощью `GET` запроса к API `/users/me`.

<Card title="Read current user" icon="link" href="/api-reference/users/read-current-user">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

### Структура ответа

Метод возвращает объект пользователя:

```json theme={null}
{
  "id": "string",
  "phone": "string",
  "first_name": "string",
  "last_name": "string",
  "avatar_url": "string",
  "is_verified": "bool"
}
```

где:

`is_verified` - булевое значения для определения состояния проверки пользователя по номеру телефона

Если пользователь **не авторизован**, нет **JWT** в **headers** или срок жизни **access\_token** истек, вернет статус `401` с объектом:

```json theme={null}
{
  "detail": "Not authenticated"
}
```

## Как получить данные любого юзера по ID

Получить данные юзера можно с помощью `GET` запроса к API `/users/{id}` по `ID` юзера.

<Card title="Get user by id" icon="link" href="/api-reference/users/get-user-by-id">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

Структура ответа совпадает с объектом авторизованного юзера (см. выше)

## Как обновить данные авторизованного юзера

Обновить данные авторизованного юзера можно с помощью `PATCH` запроса к API `/users/me`.

<Card title="Update user" icon="link" href="/api-reference/users/update-current-user">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

### Структура json body

Для обновления данных пользователя необходимо отправить в `PATCH` запросе `json` в формате:

<Note>
  Нет необходимости постоянно отправлять все поля при каждом запросе, можно отправлять только те, которые нужно изменить, например, только `first_name`.
</Note>

```json theme={null}
{
  "first_name": "string",
  "last_name": "string",
  "avatar_url": "string"
}
```

### Структура ответа

В ответ на обновление пользователя, метод вернет стандартный объект авторизованного юзера, только уже с обновленными полями.

```json theme={null}
{
  "id": "string",
  "phone": "string",
  "first_name": "string",
  "last_name": "string",
  "avatar_url": "string",
  "is_verified": "bool"
}
```

## Как получить раунды пользователя

Получить раунды юзера, в которых он числится как **участник** можно с помощью `GET` запроса к API `/users/rounds`.

<Card title="Get user rounds" icon="link" href="/api-reference/users/get-user-rounds">
  Перейти к роуту и изучить основные поля
</Card>

<Note>
  Данный роут **требует** JWT авторизацию для получения данных.
</Note>

### Query параметры

С помощью этого роута можно получить как раунды, в которых пользователь является участником, так и те, в которых он является организатором.

<Note>
  В параметр `as_owner` можно передовать любое значение, которое обрабаывается как `bool`:

  /rounds?as\_owner=1

  /rounds?as\_owner=True

  /rounds?as\_owner=true

  /rounds?as\_owner=on

  /rounds?as\_owner=yes
</Note>

| Параметр          | Описание                                     | Значение по умолчанию |
| ----------------- | -------------------------------------------- | --------------------- |
| `as_owner` (bool) | Фильтрует раунды по создателю или участникам | **false**             |

Пример использования:

`GET /users/rounds` - вернет раунды, в которых пользователь является участником

`GET /users/rounds?as_owner=true` - вернет раунды, в которых пользователь является организатором

### Структура ответа

В ответ метод вернет массив объектов раундов с продуктами.

```json theme={null}
[
  {
    "id": "string",
    "status": "string",
    "entry_fee": "string",
    "is_active": true,
    "owner_id": "string",
    "product": {
      "id": "string",
      "name": "string",
      "price": 0,
      "main_picture_url": "string",
      "is_active": true,
      "quantity": 0,
      "store_id": 0,
      "detail_desc": "string",
      "question_id": 0,
      "format_price": "string"
    }
  }
]
```
