# API centrada en el usuario

## registerUser

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

Asocia un ID de usuario externo con un dispositivo específico.

#### Encabezados de la solicitud

| Nombre | Requerido | Valor | Descripción |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Sí | Token `XXXX` | [Token de dispositivo de la API](/es/developer/api-reference/api-access-token/#device-api-token) para acceder a la API de dispositivo. Reemplace `XXXX` con su token de API de dispositivo real. |

#### Cuerpo de la solicitud

| Nombre | Requerido | Tipo | Descripción |
| ----------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| userId | No | cadena | [ID de usuario](/es/developer/api-reference/api-identifiers/#user-id) para asociar con un dispositivo. Si está vacío, use hwid. |
| application | Sí | cadena | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| hwid | Sí | cadena | [HWID de Pushwoosh](/es/developer/api-reference/api-identifiers/#hardware-id) |
| tz_offset | No | entero | Desplazamiento de la zona horaria en segundos para el dispositivo. |
| device_type| No | entero | [Tipo de dispositivo](/es/developer/api-reference/api-identifiers/#device-type). Vea los valores posibles en `/registerDevice`. |

Se puede usar más tarde en la llamada a la API [`/createMessage`](/es/developer/api-reference/messages-api/#createmessage) (el parámetro _users_).\
Puede llamar a esta función antes de tener el token push y antes de la llamada a [`/registerDevice`](/es/developer/api-reference/device-api/#registerdevice).

#### Ejemplo de solicitud

```json
{
  "request": {
    "userId": "user_3078a",                     // opcional. Si está vacío, use hwid
    "application": "XXXXX-XXXXX",               // requerido. Código de aplicación de Pushwoosh
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // requerido. ID de hardware del dispositivo
    "tz_offset": -3600,                         // opcional. Desplazamiento de la zona horaria en segundos
    "device_type": 3                            // opcional. Tipo de dispositivo, vea /registerDevice
                                                //           para los tipos de dispositivo
  }
}
```

#### Ejemplo de respuesta

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

<Aside type="note">
Para correos electrónicos, llame a [`/registerEmailUser`](/es/developer/api-reference/email-api/#registeremailuser).
</Aside>

## deleteUser

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

Elimina un usuario y todos los dispositivos asociados con el [ID de usuario](/es/developer/api-reference/api-identifiers/#user-id) especificado dentro de la aplicación. La solicitud se procesa de forma asíncrona y el endpoint devuelve `200 OK` tan pronto como la solicitud de eliminación ha sido aceptada para su procesamiento.

#### Encabezados de la solicitud

| Nombre | Requerido | Valor | Descripción |
|---------------|----------|------------------|------------------------------------------------------------|
| Authorization | Sí | Token `XXXX` | [Token de dispositivo de la API](/es/developer/api-reference/api-access-token/#device-api-token) para acceder a la API de dispositivo. Reemplace `XXXX` con su token de API de dispositivo real. |
| Content-Type | Sí | application/json | |

#### Cuerpo de la solicitud

| Nombre | Requerido | Tipo | Descripción |
| ----------- | -------- | ------ | --------------------------------------------------------------------------------------------------------------- |
| application | Sí | cadena | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| user_id | Sí | cadena | [ID de usuario](/es/developer/api-reference/api-identifiers/#user-id) a eliminar. Se eliminarán todos los dispositivos asociados con este usuario en la aplicación especificada. |


#### Ejemplo de solicitud

```json
{
  "application": "XXXXX-XXXXX",   // requerido. Código de aplicación de Pushwoosh
  "user_id": "user_3078a"         // requerido. ID de usuario a eliminar
}
```

#### Ejemplo de respuesta

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

##### Códigos de estado

| Código de estado HTTP | status_code | Descripción |
| ---------------- | ------------ | -------------------------------------------------- |
| 200 | 200 | Solicitud de eliminación aceptada |
| 200 | 210 | Error de argumento. Vea status_message para más información. |
| 400 | N/A | Cadena de solicitud mal formada |
| 401 | N/A | Falta el token de autorización o no es válido |
| 500 | 500 | Error interno |

## postEvent

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

Desencadena un evento.

#### Encabezados de la solicitud

| Nombre | Requerido | Valor | Descripción |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | Sí | Token `XXXX` | [Token de dispositivo de la API](/es/developer/api-reference/api-access-token/#device-api-token) para acceder a la API de dispositivo. Reemplace `XXXX` con su token de API de dispositivo real. |


#### Cuerpo de la solicitud

| Nombre | Requerido | Tipo | Descripción |
| ---------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hwid | Sí | cadena | [ID de hardware del dispositivo](/es/developer/api-reference/api-identifiers/#hardware-id) usado en una solicitud /registerDevice. Se puede usar junto con 'userId' para identificar a un usuario que ha desencadenado un evento. |
| application | Sí | cadena | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| event | Sí | cadena | [Nombre del evento](/es/developer/api-reference/api-identifiers/#event-name) exactamente como se creó en el Panel de Control de Pushwoosh. |
| attributes | Sí | objeto | Objeto JSON con los atributos del evento. Déjelo vacío si no es necesario pasar atributos. |
| timestampUTC | No | entero | Marca de tiempo en UTC. |
| timestampCurrent | No | entero | Marca de tiempo en hora local. |
| userId | Sí | cadena | [ID de usuario](/es/developer/api-reference/api-identifiers/#user-id) asociado con un usuario que ha desencadenado el evento. Puede ser reemplazado por o usado junto con un HWID. |
| device_type | No | entero | [Vea los valores posibles](/es/developer/api-reference/api-identifiers/#device-type) |

El nombre del evento en la solicitud debe coincidir con el nombre del evento en el Panel de Control de Pushwoosh. Tenga en cuenta que la propiedad "attributes" puede estar vacía (pero no omitida) en caso de que el evento no tenga atributos.

#### Ejemplo de solicitud

```json
{
  "request":{ 
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // requerido. ID de hardware del dispositivo usado en una API /registerDevice.
                                                //           Se puede usar junto con un userId para identificar a 
                                                //           un usuario que ha desencadenado un evento.
    "application": "XXXXX-XXXXX",               // requerido. Código de aplicación de Pushwoosh
    "event": "activityCompleted",               // requerido. Nombre del evento exactamente como se creó en el Panel de Control de Pushwoosh
    "attributes": {                             // requerido. Dejar vacío si no es necesario pasar atributos. 
      "login": "facebook",
      "success": "yes",
      "internet": "wifi"
    },
    "timestampUTC": 1435228403,                 // opcional. Marca de tiempo en UTC
    "timestampCurrent": 1435253603,             // opcional. Marca de tiempo en hora local
    "userId": "someuser@user.com",              // requerido. Un id de usuario que se usa para la identificación de 
                                                //           usuarios en múltiples dispositivos. Puede ser reemplazado por
                                                //           o usado junto con un HWID.
    "device_type": 1                            // opcional.
  }
}

```

#### Ejemplo de respuesta

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

#### Envío de eventos de conversión

Para reportar ingresos directamente en lugar de [mapear un evento existente](/es/product/audience-data-and-segmentation/events/conversion-events/), envíe `postEvent` con `PW_Conversion` como nombre del evento y el `value` y `currency` de la transacción en `attributes`:

```json
{
  "request":{
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_Conversion",
    "attributes": {
      "value": 49.99,               // requerido. Monto de la transacción
      "currency": "USD",            // requerido. Código de moneda ISO 4217
      "transaction_id": "txn_8f21", // opcional. Su propia referencia de transacción
      "product_id": "prod_premium"  // opcional
    },
    "userId": "someuser@user.com"
  }
}
```

<Aside type="note">
`transaction_id` no es utilizado por Pushwoosh para deduplicar ingresos — se almacena tal cual para sus propios informes y conciliación. Si informa la misma transacción más de una vez, cada llamada se registra por separado. Consulte [Eventos de conversión](/es/product/audience-data-and-segmentation/events/conversion-events/) para ver cómo encajan los eventos canónicos y el mapeo de eventos.
</Aside>