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

/user используется, когда нужно получить или создать пользователя и сессию без отправки pageview или бизнес-события.


# user: получение или создание пользователя

curl --request POST 
--url 'https://evs-01.gravityfield.ai/v2/user'
--header 'content-type: application/json' 
--header 'Authorization: Bearer your-api-key' 
--data '
{
  "sec": "YOUR_SECTION_ID",
  "user": {},
  "ctx": {
    "type": "HOMEPAGE",
    "data": [],
    "location": "https://shop.ru/"
  },
  "device": {
    "ua": "Mozilla/5.0",
    "ip": "54.100.200.255",
    "userTime": "2026-06-03T15:00:00+03:00"
  },
  "options": {
    "isReturnUserInfo": true
  }
}'
{
  "user": {
    "uid": "665f0a000000000000000001",
    "ses": "7356efc2-6ffd-4553-bade-b9ab5d9ce141"
  }
}

Сохраните user.uid между сессиями пользователя, а user.ses - для текущей сессии приложения или сайта.

# Как работает uid и ses

uid - идентификатор пользователя в Gravity Field. Его нужно сохранять между сессиями, чтобы последующие просмотры, события и запросы кампаний относились к одному пользователю.

ses - идентификатор текущей сессии. Его можно хранить только на время текущего запуска приложения или текущей browser session.

# Когда вызывать /user

/user полезен, если нужно заранее получить или обновить uid и ses, но не нужно отправлять pageview или бизнес-событие.

Типичные случаи:

  • первый запуск приложения или первый server-side запрос;
  • нужно создать новую сессию до вызова /visit, /event или /choose;
  • нужно получить расширенную информацию о пользователе через options.isReturnUserInfo;
  • нужно проверить, что API-ключ и sec настроены корректно.

# Что передавать в user

Ситуация Пример
Новый пользователь "user": {}
Есть сохранённый пользователь, но новая сессия "user": { "uid": "USER_UID" }
Продолжается текущая сессия "user": { "uid": "USER_UID", "ses": "SESSION_ID" }
Используется внешний ID клиента "user": { "custom": "CUSTOM_USER_ID", "ses": "SESSION_ID" }

Если передаёте user.custom, передавайте и user.ses. Не используйте custom как замену cuid для омниканальной склейки профиля: для этого используйте события login-v1 или signup-v1 с cuid и cuidType.

# Как обрабатывать ответ

Если ответ содержит user.uid или user.ses, обновите локальное хранилище:

if (response.user?.uid) {
  saveUid(response.user.uid);
}

if (response.user?.ses) {
  saveSession(response.user.ses);
}

Если uid или ses не пришли в ответе, оставьте текущие локальные значения без изменений.