# API, ориентированный на пользователя

## registerUser

`POST` `https://api.pushwoosh.com/json/1.3/registerUser`

Связывает внешний User ID с указанным устройством.

#### Заголовки запроса

| Имя           | Обязательный | Значение      | Описание                                                                                                                                  |
|---------------|--------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| Authorization | Да           | Token `XXXX`  | [Токен устройства API](/ru/developer/api-reference/api-access-token/#device-api-token) для доступа к Device API. Замените `XXXX` на ваш фактический токен устройства API. |

#### Тело запроса

| Имя         | Обязательный | Тип     | Описание                                                                                                                            |
| ----------- |--------------|---------| ----------------------------------------------------------------------------------------------------------------------------------- |
| userId      | Нет          | string  | [User ID](/ru/developer/api-reference/api-identifiers/#user-id) для связи с устройством. Если пусто, используется hwid.                  |
| application | Да           | string  | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code)                                              |
| hwid        | Да           | string  | [Pushwoosh HWID](/ru/developer/api-reference/api-identifiers/#hardware-id)                                                             |
| tz\_offset  | Нет          | integer | Смещение часового пояса в секундах для устройства.                                                                                  |
| device\_type| Нет          | integer | [Тип устройства](/ru/developer/api-reference/api-identifiers/#device-type). Возможные значения см. в `/registerDevice`.                  |

Может быть использован позже в вызове API [`/createMessage`](/ru/developer/api-reference/messages-api/#createmessage) (параметр _users_).
Вы можете вызвать эту функцию до того, как получите push-токен, и до вызова [`/registerDevice`](/ru/developer/api-reference/device-api/#registerdevice).

#### Пример запроса

```json
{
  "request": {
    "userId": "user_3078a",                     // необязательно. Если пусто, используется hwid
    "application": "XXXXX-XXXXX",               // обязательно. Код приложения Pushwoosh
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // обязательно. Аппаратный ID устройства (HWID)
    "tz_offset": -3600,                         // необязательно. Смещение часового пояса в секундах
    "device_type": 3                            // необязательно. Тип устройства, см. типы устройств
                                                //           в /registerDevice
  }
}
```

#### Пример ответа

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200, 
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

<Aside type="note">
Для email вызовите [`/registerEmailUser`](/ru/developer/api-reference/email-api/#registeremailuser).
</Aside>

## deleteUser

`POST` `https://api.pushwoosh.com/api/v2/device-api/deleteUser`

Удаляет пользователя и все устройства, связанные с указанным [User ID](/ru/developer/api-reference/api-identifiers/#user-id) в приложении. Запрос обрабатывается асинхронно, и конечная точка возвращает `200 OK`, как только запрос на удаление будет принят к обработке.

#### Заголовки запроса

| Имя           | Обязательный | Значение         | Описание                                                                                                                                  |
|---------------|--------------|------------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| Authorization | Да           | Token `XXXX`     | [Токен устройства API](/ru/developer/api-reference/api-access-token/#device-api-token) для доступа к Device API. Замените `XXXX` на ваш фактический токен устройства API. |
| Content-Type  | Да           | application/json |                                                                                                                                           |

#### Тело запроса

| Имя         | Обязательный | Тип    | Описание                                                                                                                            |
| ----------- |--------------|--------| ----------------------------------------------------------------------------------------------------------------------------------- |
| application | Да           | string | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code)                                              |
| user\_id    | Да           | string | [User ID](/ru/developer/api-reference/api-identifiers/#user-id) для удаления. Все устройства, связанные с этим пользователем в указанном приложении, будут удалены. |


#### Пример запроса

```json
{
  "application": "XXXXX-XXXXX",   // обязательно. Код приложения Pushwoosh
  "user_id": "user_3078a"         // обязательно. User ID для удаления
}
```

#### Пример ответа

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

##### Коды состояния

| Код состояния HTTP | status\_code | Описание                                                               |
| ------------------ | ------------ | ---------------------------------------------------------------------- |
| 200                | 200          | Запрос на удаление принят                                              |
| 200                | 210          | Ошибка аргумента. См. status\_message для получения дополнительной информации. |
| 400                | N/A          | Неверно сформированная строка запроса                                  |
| 401                | N/A          | Отсутствует или недействителен токен авторизации                       |
| 500                | 500          | Внутренняя ошибка                                                      |

## postEvent

`POST` `https://api.pushwoosh.com/json/1.3/postEvent`

Инициирует событие.

#### Заголовки запроса

| Имя           | Обязательный | Значение      | Описание                                                                                                                                  |
|---------------|--------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| Authorization | Да           | Token `XXXX`  | [Токен устройства API](/ru/developer/api-reference/api-access-token/#device-api-token) для доступа к Device API. Замените `XXXX` на ваш фактический токен устройства API. |


#### Тело запроса

| Имя              | Обязательный | Тип     | Описание                                                                                                                                                                     |
| ---------------- |--------------|---------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hwid             | Да           | string  | [Аппаратный ID устройства (HWID)](/ru/developer/api-reference/api-identifiers/#hardware-id), используемый в запросе /registerDevice. Может использоваться вместе с 'userId' для идентификации пользователя, который инициировал событие. |
| application      | Да           | string  | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code)                                                                                       |
| event            | Да           | string  | [Название события](/ru/developer/api-reference/api-identifiers/#event-name) в точности так, как оно создано в Панели управления Pushwoosh.                                         |
| attributes       | Да           | object  | Объект JSON с атрибутами события. Оставьте его пустым, если атрибуты передавать не нужно.                                                                                      |
| timestampUTC     | Нет          | integer | Временная метка в UTC.                                                                                                                                                       |
| timestampCurrent | Нет          | integer | Временная метка в локальном времени.                                                                                                                                         |
| userId           | Да           | string  | [User ID](/ru/developer/api-reference/api-identifiers/#user-id), связанный с пользователем, который инициировал событие. Может быть заменен или использован вместе с HWID.          |
| device\_type     | Нет          | integer | [См. возможные значения](/ru/developer/api-reference/api-identifiers/#device-type)                                                                                             |

Название события в запросе должно совпадать с названием события в Панели управления Pushwoosh. Обратите внимание, что свойство "attributes" может быть пустым (но не опущенным), если у события нет атрибутов.

#### Пример запроса

```json
{
  "request":{ 
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // обязательно. Аппаратный ID устройства (HWID), используемый в /registerDevice API.
                                                //           Может использоваться вместе с userId для идентификации
                                                //           пользователя, который инициировал событие.
    "application": "XXXXX-XXXXX",               // обязательно. Код приложения Pushwoosh
    "event": "activityCompleted",               // обязательно. Название события в точности так, как оно создано в Панели управления Pushwoosh
    "attributes": {                             // обязательно. Оставьте пустым, если атрибуты передавать не нужно. 
      "login": "facebook",
      "success": "yes",
      "internet": "wifi"
    },
    "timestampUTC": 1435228403,                 // необязательно. Временная метка в UTC
    "timestampCurrent": 1435253603,             // необязательно. Временная метка в локальном времени
    "userId": "someuser@user.com",              // обязательно. Идентификатор пользователя, который используется для идентификации
                                                //           пользователей на нескольких устройствах. Может быть заменен
                                                //           или использован вместе с HWID.
    "device_type": 1                            // необязательно.
  }
}

```

#### Пример ответа

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "code": "61BC9-84DD0"
  }
}
```
</TabItem>
</Tabs>

#### Отправка событий-конверсий

Чтобы сообщать о доходе напрямую, а не [сопоставлять существующее событие](/ru/product/audience-data-and-segmentation/events/conversion-events/), отправьте `postEvent` с `PW_Conversion` в качестве названия события и `value` и `currency` транзакции в `attributes`:

```json
{
  "request":{
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_Conversion",
    "attributes": {
      "value": 49.99,               // обязательно. Сумма транзакции
      "currency": "USD",            // обязательно. Код валюты по ISO 4217
      "transaction_id": "txn_8f21", // необязательно. Ваша собственная ссылка на транзакцию
      "product_id": "prod_premium"  // необязательно
    },
    "userId": "someuser@user.com"
  }
}
```

<Aside type="note">
`transaction_id` не используется Pushwoosh для дедупликации дохода — он хранится как есть для вашей собственной отчетности и сверки. Если вы сообщаете об одной и той же транзакции более одного раза, каждый вызов записывается отдельно. См. [События-конверсии](/ru/product/audience-data-and-segmentation/events/conversion-events/) для получения информации о том, как канонические события и сопоставление событий соотносятся друг с другом.
</Aside>