# API de Segmentación (Filtros)

## createFilter

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

Crea un nuevo filtro.

**Cuerpo de la solicitud**

| Nombre                                                 | Requerido | Tipo   | Descripción                                                                                                                                                                                                                                                                   |
| ---------------------------------------------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| auth\*               | Sí      | string | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh.                                                                                                                                                                                                                                |
| name\*               | Sí      | string | [Nombre del filtro](/es/developer/api-reference/api-identifiers/#segment--filter-name).                                                                                                                                                                                                                                                                  |
| filter\_expression\* | Sí | string | <p>Expresión construida según las reglas del <a href="/developer/api-reference/segmentation-filters-api/segmentation-language/">lenguaje de segmentación</a>. <br /><strong>Ejemplo:</strong> <code>T("City", eq, "Madrid")</code> para segmentar usuarios cuya ciudad es Madrid.</p> |
| application                                          | No       | string | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code). Este parámetro solo se puede utilizar con la configuración de alta velocidad; omítalo en caso contrario.                                                                                                                                                                              |
| expiration\_date                                     | No       | string | Vencimiento del filtro. El filtro se eliminará automáticamente en la fecha especificada, a menos que se utilice en un Preset o en una fuente RSS.                                                                                                                                                   |

**200**   
```json
{
  "status_code": 200, 
  "status_message": "OK", 
  "response": {
    "name": "filter name"
  }
}
```



**Ejemplo**
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",
    "name": "City = Madrid",
    "filter_expression": "T(\"City\", eq, \"Madrid\")",
    "application": "B18XX-XXXXX",
    "expiration_date": "2025-01-01"
  }
}

// creando Filtros para Zonas Horarias
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // Token de acceso a la API desde el Panel de Control de Pushwoosh
    "name": "Timezone Filter",
    "filter_expression": "T(\"Timezone\", BETWEEN, [\"UTC-12:00\", \"UTC+14:00\"])"
  }
}
```


## listFilters

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

Devuelve una lista de los segmentos (filtros) disponibles con sus condiciones.

**Cuerpo de la solicitud**

| Nombre                                          | Requerido | Tipo   | Descripción                                    |
| --------------------------------------------- | -------- | ------ | ---------------------------------------------- |
| auth\*        | Sí      | string | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| application\* | Sí      | string | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code)                |


**200** 
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "filters": [{
      "code": "52551-F2F42",
      "name": "City = Madrid",
      "filter_expression": "T(\"City\", eq, \"madrid\")",
      "expiration_date": "2025-01-01",
      "application": "B18XX-XXXXX"
    }]
  }
}

```


**Ejemplo**
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",
    "application": "B18XX-XXXXX"
  }
}
```

## deleteFilter

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

Elimina un filtro existente.

**Cuerpo de la solicitud**

| Nombre                                   | Tipo   | Descripción                                    |
| -------------------------------------- | ------ | ---------------------------------------------- |
| auth\* | string |  [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| name\* | string | [Nombre del filtro](/es/developer/api-reference/api-identifiers/#segment--filter-name).                                    |

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



```json title="Ejemplo"
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // Token de acceso a la API desde el Panel de Control de Pushwoosh
    "name": "filter name"
  }
}
```

## exportSegment

`POST` `https://api.pushwoosh.com/api/v2/audience/exportSegment`

Una solicitud programada. Exporta la lista de suscriptores que cumplen con las condiciones del filtro especificadas.

**Cuerpo de la solicitud**
| Nombre   <div style="width:100px"></div>                      | Requerido  <div style="width:100px"></div>   | Tipo    | Descripción                                                                                                                                                                                                                                                                                                          |
|----------------------------|------------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| auth\*                    | Sí        | string  | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh.                                                                                                                                                                                                                                 |
| filterExpression\*        | Sí        | string  | Condiciones del filtro                                                                                                                                                                                                                                                              |
| exportData                | No         | array   | Datos a exportar. Valores posibles: `"hwids"`, `"push_tokens"`, `"users"`, `"tags"`, `"location"`. Incluir `"location"` añade las columnas `Latitud` y `Longitud` al CSV exportado. Si se omite `exportData`, `Latitud` y `Longitud` se incluyen en la exportación por defecto. |
| filterCode                | No         | string  | [Código de filtro](/es/developer/api-reference/api-identifiers/#segment--filter-code) predefinido, se puede usar en lugar de `filterExpression`. Se puede obtener de la API `/listFilters` o de la barra de direcciones de su navegador al ver el filtro en el Panel de Control.                                                                                                |
| applicationCode           | Requerido si está utilizando `filterExpression` o `filterCode`. | string  | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code)                                                                                                                                                                                     |
| generateExport            | No         | boolean | Por defecto, se establece en `true`, y una respuesta contiene un enlace para descargar el archivo. Si es false, solo se enviará el recuento de dispositivos en la respuesta.                                                                                                                                          |
| format                    | No         | string  | Establece el formato del archivo exportado: "csv" o "json_each_line". Si se omite, se genera el archivo CSV.                                                                                                                                                                      |
| tagsList                  | No         | array   | Especifica las [etiquetas (tags)](/es/developer/api-reference/api-identifiers/#tag) a exportar. Para obtener solo las etiquetas específicas, el array "exportData" debe contener el valor "tags".                                                                                                                                                            |
| includeWithoutTokens      | No         | boolean | Establézcalo en `true` para incluir a los usuarios sin tokens push en el archivo exportado. El valor predeterminado es `false`.                                                                                                                                                                         |


<Tabs>
<TabItem label="200 Successful">
```json
{
  "task_id": "177458"
}
```
</TabItem>
</Tabs>



```json title="Ejemplo"
{
  "auth": "yxoPUlwqm…………pIyEX4H",                           // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
  "filterExpression": "AT(\"12345-67890\", \"Name\", any)", // condiciones del filtro, consulte la guía del Lenguaje de Segmentación para la sintaxis
  "filterCode": "12345-67890",                              // código de filtro predefinido, se puede usar en lugar de filterExpression
  "applicationCode": "00000-AAAAA",                         // Requerido si está utilizando filterExpression o filterCode. Código de la aplicación Pushwoosh. Se puede obtener de la solicitud de la API /listFilters o de la barra de direcciones de su navegador al ver el filtro en el Panel de Control.
  "generateExport": true,                                   // si es false, solo se enviará el recuento de dispositivos en la respuesta; por defecto, una respuesta contiene un enlace para descargar el archivo CSV
  "format": "json_each_line",                               // formato del archivo para presentar los datos: "csv" – se descarga el archivo .csv; "json" – un archivo JSON con todos los dispositivos exportados; o "json_each_line" – una línea JSON por cada dispositivo. Si no se especifica, CSV es el formato por defecto.
  "exportData": ["hwids", "tags"],                          // opcional. Datos a exportar. Valores posibles: "hwids", "push_tokens", "users", "tags", "location", "fcm_keys", "web keys"
  "tagsList": ["Name", "Level"],                            // opcional. Especifica las etiquetas a exportar. Para obtener solo las etiquetas específicas, el valor "tags" debe enviarse dentro del array "exportData" o "exportData" debe estar vacío.
  "includeWithoutTokens": true                              // opcional. Establézcalo en true para incluir a los usuarios sin tokens push en el archivo exportado. El valor predeterminado es false.
}
```

<Aside type="note">
Puede encontrar la referencia del Lenguaje de Segmentación para escribir expresiones de filtro [aquí](/es/developer/api-reference/segmentation-filters-api/segmentation-language/).
</Aside>

Por ejemplo, para exportar todos los suscriptores de una aplicación en particular, utilice las siguientes condiciones de filtro:

```json
{
  "auth": "yxoPUlwqm…………pIyEX4H",            // Token de acceso a la API desde el Panel de Control de Pushwoosh
  "filterExpression": "A(\"AAAAA-BBBBB\")",  // Expresión de filtro que hace referencia al segmento de la aplicación
  "applicationCode": "AAAAA-BBBBB"           // Código de aplicación de Pushwoosh requerido
}
```

<Aside type="caution">
En la respuesta, obtendrá el **`task_id`** para obtener el archivo resultante. Luego, llame a [/exportSegment/result](./#exportsegment-results) con ese `task_id` en el cuerpo de la solicitud para recuperar el archivo resultante.
</Aside>

## resultados de exportSegment

`POST` `https://api.pushwoosh.com/api/v2/audience/exportSegment/result`

**Recupera el enlace al CSV con los resultados de /exportSegment.**

**Cuerpo de la solicitud**

| Nombre                                       | Tipo   | Descripción                                              |
| ------------------------------------------ | ------ | -------------------------------------------------------- |
| auth\*     | String | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh.           |
| task\_id\* | String | Identificador recibido en su respuesta de `/exportSegment`.  |

<Tabs>
<TabItem label="200: OK">
```json
{
  "devicesCount": "24735",
  "filename": "https://static.pushwoosh.com/segment-export/export_segment_XXXXX_XXXXX_xxxxxxxxxxxxxxxxx.csv.zip",
  "status": "completed"
}
```
</TabItem>
</Tabs>

Pase el "**task_id**" recibido en su respuesta de `/exportSegment` en el cuerpo de la solicitud de `/exportSegment/result`.

En la respuesta de `/exportSegment/result`, recibirá el parámetro "filename". Siga el enlace proporcionado en el valor de ese parámetro para descargar automáticamente un archivo ZIP.
Descomprima el archivo para recuperar el archivo CSV o JSON (dependiendo del "formato" especificado en su solicitud) que contiene los datos de los dispositivos.

A partir del 3 de abril de 2025, se requerirá autorización para descargar el archivo:

- Si descarga a través de un **navegador**, simplemente inicie sesión en el **Panel de Control de Pushwoosh** para obtener acceso.  
- Si descarga a través de **software de servidor**, incluya la siguiente cabecera en su solicitud:
`Authorization: Token YOUR_API_TOKEN`

Si especifica el "exportData" en su solicitud de `/exportSegment`, el archivo descargado contendrá solo los datos solicitados. Por defecto, el archivo contiene los siguientes datos de usuario:

| **Campo**          | Descripción                                                                                     | Ejemplo de valor                     |
| ------------------ | ----------------------------------------------------------------------------------------------- | ------------------------------------ |
| Hwid               | [ID de hardware de un dispositivo](/es/developer/api-reference/api-identifiers/#hardware-id)                                                                        | 01D1BA5C-AAAA-0000-BBBB-9B81CD5823C8 |
| User ID            | [ID de Usuario](/es/developer/api-reference/api-identifiers/#user-id) que asocia un dispositivo con un usuario en particular. Si no se asigna un ID de Usuario, se utiliza el HWID.  | user8192                             |
| Push Token         | Identificador único asignado a un dispositivo por las pasarelas de mensajería en la nube. [Más información](/es/developer/api-reference/api-identifiers/#push-token)                         | eeeb2fd7....0fc3547                  |
| Type               | Tipo de plataforma (entero).                                                                        | 1                                    |
| Type (humanized)   | Tipo de plataforma (cadena).                                                                         | iOS                                  |
| Age                | Valor de la etiqueta de Edad por defecto.                                                                   | 29                                   |
| ApplicationVersion | Valor de la etiqueta de Versión de la Aplicación por defecto.                                                   | 1.12.0.0                             |
| City               | Valor de la etiqueta de Ciudad por defecto.                                                                  | us, boston                           |
| TagName            | Valor de una etiqueta creada en su cuenta.                                                         | TagValue                             |