# API de Geozonas

## getNearestZone

Llamado internamente desde el SDK. Recupera los parámetros de la geozona más cercana y la distancia a ella. También registra la ubicación del dispositivo para las notificaciones push geolocalizadas.

```http
POST https://api.pushwoosh.com/json/1.3/getNearestZone
```


### Parámetros del cuerpo de la solicitud


| Parámetro | Tipo <div style="width:80px"></div> | Requerido | Descripción |
|-----------|--------|:--------:|-------------|
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| **hwid** | `string` | Sí | [ID de hardware del dispositivo](/es/developer/api-reference/api-identifiers/#hardware-id) utilizado en la solicitud `/registerDevice`. |
| **lat** | `string` | Sí | Latitud del dispositivo. |
| **lng** | `string` | Sí | Longitud del dispositivo. |


### Ejemplo de solicitud

```json
{
  "request": {
    "application": "APPLICATION_CODE", 
    "hwid": "HWID",
    "lat": 10.12345,
    "lng": 28.12345
  }
}
```

### Ejemplo de PHP

```php
// Ver http://gomoob.github.io/php-pushwoosh/get-nearest-zone.html

use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;

// Crea la instancia de la solicitud
$request = GetNearestZoneRequest::create()
    ->setHwid('HWID')
    ->setLat(10.12345)
    ->setLng(28.12345);

// Llama al servicio web '/getNearestZone'
$response = $pushwoosh->getNearestZone($request);

if ($response->isOk()) {
    print 'Zone name : ' . $response->getResponse()->getName();
    print 'Latitude : ' . $response->getResponse()->getLat();
    print 'Longitude : ' . $response->getResponse()->getLng();
    print 'Range : ' . $response->getResponse()->getRange();
    print 'Distance : ' . $response->getResponse()->getDistance();
} else {
    print 'Oops, the operation failed :-(';
    print 'Status code : ' . $response->getStatusCode();
    print 'Status message : ' . $response->getStatusMessage();
}
```


## addGeoZone

Añade una Geozona a una aplicación específica.

```http
POST https://api.pushwoosh.com/json/1.3/addGeoZone
```


### Parámetros del cuerpo de la solicitud


| Parámetro <div style="width:150px"></div>  | Tipo <div style="width:80px"></div> | Requerido | Descripción |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `array` | Sí | Parámetros de la Geozona como un array JSON. |
| **geozones.name** | `string` | Sí | Nombre de la Geozona. |
| **geozones.lat** | `string` | Sí | Latitud de la Geozona. |
| **geozones.lng** | `string` | Sí | Longitud de la Geozona. |
| **geozones.cooldown** | `integer` | Sí | Período de silencio después de enviar una notificación (en segundos). |
| **geozones.range** | `integer` | Sí | Rango de la Geozona en metros. Mínimo 50. |
| **geozones.content** | `string or object` | Requerido si `presetCode` está vacío. | Contenido del mensaje de la Geozona. |
| **geozones.presetCode** | `string` | Requerido si `content` está vacío. | [Preset de Push](/es/developer/api-reference/api-identifiers/#preset-code) para usar en lugar de `content`. |
| **geozones.cluster** | `string` | No | Especifique `null` para desvincular un clúster de la Geozona. |
| **geozones.campaign** | `string` | No | Especifique `null` para desvincular una campaña de la Geozona. Si se omite, el valor de la campaña no cambiará. Nota: Tiene mayor prioridad que la campaña en el preset. |
| **geozones.timetable** | `object` | No | Establece los intervalos del horario. |


### Ejemplo de solicitud

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // Token de acceso a la API desde el Panel de Control de Pushwoosh
    "application": "XXXXX-XXXXX",            // Código de aplicación de Pushwoosh
    "geozones": [{
      "name": "Statue of George",            // requerido. Nombre de la Geozona.
      "lat": "40.70087797",                   // requerido. Latitud de la Geozona.
      "lng": "-73.931851387",                 // requerido. Longitud de la Geozona.
      "cooldown": 60,                         // en segundos, requerido. Período de silencio después de enviar una notificación
      "range": 50,                            // en metros, mínimo 50, requerido. Rango de la geozona.
      "content": "Lorem ipsum dolor sit amet,
       consectetur adipiscing elit.",         // o objeto
      "presetCode": "AAAAA-BBBBB",            // opcional. El preset de Push podría usarse en lugar del contenido
      "cluster": "GEOZONE CLUSTER CODE",      // opcional. Se aplicará el período de cooldown del clúster
      "campaign": "CAMPAIGN_CODE",            // opcional. Especifique null para desvincular la Campaña de la Geozona
      "timetable": {                          // opcional
        "timezone": 1234,                     // en segundos
        "Mon": [                              // días disponibles: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envío de Push
          {
            "start": "04:11",
            "stop": "12:00"
          }
        ],
        "Sun": [
          {                                    // uno o dos intervalos
            "start": "01:11",
            "stop": "17:00"
          },
          {
            "start": "18:01",
            "stop": "23:59"
          }
        ]
      }
    }]
  }
}

```
## updateGeoZone

Actualiza las propiedades de la Geozona.

```http
POST https://api.pushwoosh.com/json/1.3/updateGeoZone
```

### Parámetros del cuerpo de la solicitud

| Parámetro <div style="width:150px"></div> | Tipo <div style="width:80px"></div> | Requerido | Descripción |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **geoZoneId** | `string` | Sí | [ID de Geozona](/es/developer/api-reference/api-identifiers/#geozone-id) de la solicitud `/addGeoZone`. |
| **name** | `string` | No | Nuevo nombre de la Geozona. |
| **cooldown** | `integer` | No | Cooldown para actualizar, en segundos. |
| **status** | `integer` | No | 0 - desactivado, 1 - activado. |
| **content** | `string` | No | Contenido para la notificación push de la Geozona. No se puede usar con `presetCode`. |
| **cluster** | `string` | No | Nuevo nombre del clúster. Especifique `null` para desvincular el clúster de la Geozona. |
| **campaign** | `string` | No | Nuevo ID de campaña. Especifique `null` para desvincular la Campaña de la Geozona. Si se omite, el valor de la Campaña no cambiará. Tiene mayor prioridad que una Campaña de un preset. |
| **lat** | `number` | No | Latitud de la Geozona. |
| **lng** | `number` | No | Longitud de la Geozona. |
| **range** | `integer` | No | Nuevo rango en metros. |
| **timetable** | `object` | No | Horario de la Geozona. Vea más información a continuación. |

---


### Ejemplo de solicitud

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "geoZoneId": 100016750,                  // requerido, del método /addGeoZone
    "name": "new geozone name",              // opcional
    "cooldown": 222,                         // en segundos, opcional
    "status": 0,                             // opcional, 0 - desactivado, 1 - activado
    "presetCode": "BBBBB-AAAAA",             // opcional, no se puede usar junto con "content"
    "content": "new geozone content",        // opcional, no se puede usar junto con "presetCode"
    "cluster": "GEOZONE CLUSTER CODE",       // opcional. Especifique null para desvincular el clúster de la Geozona
    "campaign": "CAMPAIGN_CODE",             // opcional. Especifique null para desvincular la Campaña de la Geozona
    "lat": 10.56,                            // opcional, latitud de la geozona
    "lng": 12.523,                           // opcional, longitud de la geozona
    "range": 500,                            // opcional, rango de la geozona
    "timetable": {                           // opcional
      "timezone": 1234,                      // en segundos
      "Mon": [                               // días disponibles: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envío de Push
        {
          "start": "04:11",
          "stop": "12:00"
        }
      ],
      "Sun": [
        {                                    // uno o dos intervalos
          "start": "01:11",
          "stop": "17:00"
        },
        {
          "start": "18:01",
          "stop": "23:59"
        }
      ]
    }
  }
}
```

## deleteGeoZone

Elimina Geozonas de la aplicación.

```http
POST https://api.pushwoosh.com/json/1.3/deleteGeoZone
```

### Parámetros del cuerpo de la solicitud


| Parámetro   <div style="width:150px"></div>   | Tipo <div style="width:80px"></div>   | Requerido | Descripción |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `string` | Sí | Array de IDs o un [ID único](/es/developer/api-reference/api-identifiers/#geozone-id) de una Geozona para eliminar. |



### Ejemplo de solicitud

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "application": "XXXXX-XXXXX",            // requerido, código de aplicación de Pushwoosh
    "geozones": [550, 526]                   // requerido, IDs de las geozonas
  }
}
```

## addGeoZoneCluster

Añade un Clúster de Geozonas a la aplicación.

```http
POST https://api.pushwoosh.com/json/1.3/addGeoZoneCluster
```


### Parámetros del cuerpo de la solicitud

| Parámetro  <div style="width:150px"></div>  | Tipo <div style="width:80px"></div>    | Requerido | Descripción |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| **name** | `string` | Sí | Nombre del clúster. |
| **cooldown** | `integer` | Sí | Un retraso antes de que un solo usuario pueda recibir el mismo mensaje del Clúster de Geozonas, en segundos. |


### Ejemplo de solicitud

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "application": "XXXXX-XXXXX",            // requerido, código de aplicación de Pushwoosh
    "name": "Raccoon city",                  // requerido, nombre del clúster
    "cooldown": 3210                         // requerido, en segundos
  }
}
```

## deleteGeoZoneCluster

Elimina un Clúster de Geozonas de la aplicación.


```http
POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneCluster
```


### Parámetros del cuerpo de la solicitud


| Parámetro   <div style="width:150px"></div>        | Tipo  <div style="width:80px"></div>  | Requerido | Descripción |
|-------------------|--------|:--------:|-------------|
| **auth**         | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application**  | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| **geoZoneCluster** | `string` | Sí | ID del clúster de Geozonas para eliminar. |


### Ejemplo de solicitud

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "application": "XXXXX-XXXXX",            // requerido, código de aplicación de Pushwoosh
    "geoZoneCluster": "EA1CE-69405"          // requerido, ID del clúster obtenido de la solicitud /addGeoZoneCluster
  }
}
```

## listGeoZones

Recupera una lista de Geozonas para la aplicación.


```http
POST https://api.pushwoosh.com/json/1.3/listGeoZones
```

### Parámetros del cuerpo de la solicitud


| Parámetro  <div style="width:150px"></div>    | Tipo <div style="width:80px"></div>   | Requerido | Descripción |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |


### Ejemplo de solicitud

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "application": "XXXXX-XXXXX"             // requerido, código de aplicación de Pushwoosh
  }
}
```
## listGeoZoneClusters

Recupera una lista de clústeres de Geozonas para la aplicación.

```http
POST https://api.pushwoosh.com/json/1.3/listGeoZoneClusters
```


### Parámetros del cuerpo de la solicitud


| Parámetro <div style="width:150px"></div>   | Tipo <div style="width:80px"></div>    | Requerido | Descripción |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sí | [Token de acceso a la API](/es/developer/api-reference/api-identifiers/#api-access-token) desde el Panel de Control de Pushwoosh. |
| **application** | `string` | Sí | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |


### Ejemplo de solicitud

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requerido, token de acceso a la API desde el Control de Pushwoosh
    "application": "XXXXX-XXXXX"             // requerido, código de aplicación de Pushwoosh
  }
}
```