Для всех пользователей необходимо передавать информацию о просмотре страниц на сайте или экранов в приложении. В API V2 для этого используется запрос `/visit`.

Текущая страница или экран описывается в `ctx`. Подробнее о типах контекста и формате `ctx.data`: [Контекст](../context.md).

---

## visit: передача просмотра страницы или экрана

!!!contrast API reference
[:icon-terminal: POST /visit](https://openapi-v2.gravityfield.ai/store-visit-event-14002043e0)
!!!

`type` принимает значения:

- `pageview` - просмотр web-страницы;
- `screenview` - просмотр экрана приложения.

### Активация и таргетинг

`/visit` не возвращает контент кампании. Этот запрос передаёт просмотр страницы или экрана и может вернуть кампании, подходящие под этот visit.

Если в ответе вернулся непустой `campaigns[]`, это означает:

1. Для переданного просмотра нашлась кампания.
2. Пользователь и текущий `ctx` подходят под условия этой кампании.
3. `campaigns[].campaignId` можно использовать в [`/choose`](./choose.md), чтобы получить контент.

Если `campaigns[]` пустой или отсутствует, это не ошибка интеграции. Это означает, что для текущего пользователя и контекста нет кампаний, подходящих под этот visit.

=== Пример запроса:
```jsx
curl --request POST 
--url 'https://evs-01.gravityfield.ai/v2/visit'
--header 'content-type: application/json' 
--header 'Authorization: Bearer your-api-key' 
--data '
{
  "sec": "YOUR_SECTION_ID",
  "user": {
    "uid": "665f0a000000000000000001",
    "ses": "7356efc2-6ffd-4553-bade-b9ab5d9ce141"
  },
  "ctx": {
    "type": "PRODUCT",
    "data": ["sku-123"],
    "location": "https://shop.ru/product/sku-123",
    "lng": "MOW"
  },
  "device": {
    "ua": "Mozilla/5.0",
    "ip": "54.100.200.255"
  },
  "type": "pageview"
}'
```
===

=== Пример ответа:
```json
{
  "user": {
    "uid": "665f0a000000000000000001",
    "ses": "7356efc2-6ffd-4553-bade-b9ab5d9ce141"
  },
  "campaigns": [
    {
      "campaignId": "665f0b000000000000000001",
      "experienceId": "665f0c000000000000000001",
      "trigger": "screenview",
      "priority": 10,
      "delayTime": 0
    }
  ]
}
```
===

### Как использовать ответ

1. Сохраните обновлённые `user.uid` и `user.ses`, если они пришли в ответе.
2. Если `campaigns[]` пустой, продолжайте обычный сценарий без персонализированного контента.
3. Если `campaigns[]` не пустой, выберите кампанию для показа и передайте её `campaignId` в [`/choose`](./choose.md).

Контент, вариация и tracking URL возвращаются на следующем шаге в `/choose`.
