# API de Geozones

## getNearestZone

Chamado internamente pelo SDK. Recupera os parâmetros da geozone mais próxima e a distância até ela. Também registra a localização do dispositivo para notificações push geográficas.

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


### Parâmetros do corpo da solicitação


| Parâmetro | Tipo <div style="width:80px"></div> | Obrigatório | Descrição |
|-----------|--------|:--------:|-------------|
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| **hwid** | `string` | Sim | [ID de hardware do dispositivo](/pt/developer/api-reference/api-identifiers/#hardware-id) usado na solicitação `/registerDevice`. |
| **lat** | `string` | Sim | Latitude do dispositivo. |
| **lng** | `string` | Sim | Longitude do dispositivo. |


### Exemplo de solicitação

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

### Exemplo em PHP

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

use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;

// Cria a instância da solicitação
$request = GetNearestZoneRequest::create()
    ->setHwid('HWID')
    ->setLat(10.12345)
    ->setLng(28.12345);

// Chama o Web Service '/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

Adiciona uma Geozone a um aplicativo específico.

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


### Parâmetros do corpo da solicitação


| Parâmetro <div style="width:150px"></div>  | Tipo <div style="width:80px"></div> | Obrigatório | Descrição |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `array` | Sim | Parâmetros da Geozone como um array JSON. |
| **geozones.name** | `string` | Sim | Nome da Geozone. |
| **geozones.lat** | `string` | Sim | Latitude da Geozone. |
| **geozones.lng** | `string` | Sim | Longitude da Geozone. |
| **geozones.cooldown** | `integer` | Sim | Período de silêncio após o envio de uma notificação (em segundos). |
| **geozones.range** | `integer` | Sim | Alcance da Geozone em metros. Mínimo de 50. |
| **geozones.content** | `string ou object` | Obrigatório se `presetCode` estiver vazio. | Conteúdo da mensagem da Geozone. |
| **geozones.presetCode** | `string` | Obrigatório se `content` estiver vazio. | [Preset de push](/pt/developer/api-reference/api-identifiers/#preset-code) para usar em vez de `content`. |
| **geozones.cluster** | `string` | Não | Especifique `null` para desvincular um cluster da Geozone. |
| **geozones.campaign** | `string` | Não | Especifique `null` para desvincular uma campanha da Geozone. Se omitido, o valor da campanha permanece inalterado. Nota: Tem prioridade maior que a campanha no preset. |
| **geozones.timetable** | `object` | Não | Define os intervalos do cronograma. |


### Exemplo de solicitação

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // Token de acesso da API do Painel de Controle da Pushwoosh
    "application": "XXXXX-XXXXX",            // Código do aplicativo Pushwoosh
    "geozones": [{
      "name": "Statue of George",            // obrigatório. Nome da Geozone.
      "lat": "40.70087797",                   // obrigatório. Latitude da Geozone.
      "lng": "-73.931851387",                 // obrigatório. Longitude da Geozone.
      "cooldown": 60,                         // em segundos, obrigatório. Período de silêncio após o envio de uma notificação
      "range": 50,                            // em metros, mínimo 50, obrigatório. Alcance da geozone.
      "content": "Lorem ipsum dolor sit amet,
       consectetur adipiscing elit.",         // ou objeto
      "presetCode": "AAAAA-BBBBB",            // opcional. O preset de push pode ser usado em vez do conteúdo
      "cluster": "GEOZONE CLUSTER CODE",      // opcional. O período de cooldown do cluster será aplicado
      "campaign": "CAMPAIGN_CODE",            // opcional. Especifique nulo para desvincular a Campanha da Geozone
      "timetable": {                          // opcional
        "timezone": 1234,                     // em segundos
        "Mon": [                              // dias disponíveis: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envio de push
          {
            "start": "04:11",
            "stop": "12:00"
          }
        ],
        "Sun": [
          {                                    // um ou dois intervalos
            "start": "01:11",
            "stop": "17:00"
          },
          {
            "start": "18:01",
            "stop": "23:59"
          }
        ]
      }
    }]
  }
}

```
## updateGeoZone

Atualiza as propriedades da Geozone.

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

### Parâmetros do corpo da solicitação

| Parâmetro <div style="width:150px"></div> | Tipo <div style="width:80px"></div> | Obrigatório | Descrição |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **geoZoneId** | `string` | Sim | [ID da Geozone](/pt/developer/api-reference/api-identifiers/#geozone-id) da solicitação `/addGeoZone`. |
| **name** | `string` | Não | Novo nome da Geozone. |
| **cooldown** | `integer` | Não | Cooldown para atualizar, em segundos. |
| **status** | `integer` | Não | 0 - desativado, 1 - ativado. |
| **content** | `string` | Não | Conteúdo para a notificação push da Geozone. Não pode ser usado com `presetCode`. |
| **cluster** | `string` | Não | Novo nome do cluster. Especifique `null` para desvincular o cluster da Geozone. |
| **campaign** | `string` | Não | Novo ID da campanha. Especifique `null` para desvincular a Campanha da Geozone. Se omitido, o valor da Campanha não será alterado. Tem prioridade maior que uma Campanha de um preset. |
| **lat** | `number` | Não | Latitude da Geozone. |
| **lng** | `number` | Não | Longitude da Geozone. |
| **range** | `integer` | Não | Novo alcance em metros. |
| **timetable** | `object` | Não | Cronograma da Geozone. Veja mais informações abaixo. |

---


### Exemplo de solicitação

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "geoZoneId": 100016750,                  // obrigatório, do método /addGeoZone
    "name": "new geozone name",              // opcional
    "cooldown": 222,                         // em segundos, opcional
    "status": 0,                             // opcional, 0 - desativado, 1 - ativado
    "presetCode": "BBBBB-AAAAA",             // opcional, não pode ser usado junto com "content"
    "content": "new geozone content",        // opcional, não pode ser usado junto com "presetCode"
    "cluster": "GEOZONE CLUSTER CODE",       // opcional. Especifique nulo para desvincular o cluster da Geozone
    "campaign": "CAMPAIGN_CODE",             // opcional. Especifique nulo para desvincular a Campanha da Geozone
    "lat": 10.56,                            // opcional, latitude da geozone
    "lng": 12.523,                           // opcional, longitude da geozone
    "range": 500,                            // opcional, alcance da geozone
    "timetable": {                           // opcional
      "timezone": 1234,                      // em segundos
      "Mon": [                               // dias disponíveis: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envio de push
        {
          "start": "04:11",
          "stop": "12:00"
        }
      ],
      "Sun": [
        {                                    // um ou dois intervalos
          "start": "01:11",
          "stop": "17:00"
        },
        {
          "start": "18:01",
          "stop": "23:59"
        }
      ]
    }
  }
}
```

## deleteGeoZone

Remove Geozones do aplicativo.

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

### Parâmetros do corpo da solicitação


| Parâmetro   <div style="width:150px"></div>   | Tipo <div style="width:80px"></div>   | Obrigatório | Descrição |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `string` | Sim | Array de IDs ou um [ID único](/pt/developer/api-reference/api-identifiers/#geozone-id) de uma Geozone para remover. |



### Exemplo de solicitação

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "application": "XXXXX-XXXXX",            // obrigatório, código do aplicativo Pushwoosh
    "geozones": [550, 526]                   // obrigatório, IDs das geozones
  }
}
```

## addGeoZoneCluster

Adiciona um Cluster de Geozone ao aplicativo.

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


### Parâmetros do corpo da solicitação

| Parâmetro  <div style="width:150px"></div>  | Tipo <div style="width:80px"></div>    | Obrigatório | Descrição |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| **name** | `string` | Sim | Nome do cluster. |
| **cooldown** | `integer` | Sim | Um atraso antes que um único usuário possa receber a mesma mensagem do Cluster de Geozone, em segundos. |


### Exemplo de solicitação

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "application": "XXXXX-XXXXX",            // obrigatório, código do aplicativo Pushwoosh
    "name": "Raccoon city",                  // obrigatório, nome do cluster
    "cooldown": 3210                         // obrigatório, em segundos
  }
}
```

## deleteGeoZoneCluster

Remove um Cluster de Geozone do aplicativo.


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


### Parâmetros do corpo da solicitação


| Parâmetro   <div style="width:150px"></div>        | Tipo  <div style="width:80px"></div>  | Obrigatório | Descrição |
|-------------------|--------|:--------:|-------------|
| **auth**         | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application**  | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| **geoZoneCluster** | `string` | Sim | ID do cluster de Geozone a ser removido. |


### Exemplo de solicitação

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "application": "XXXXX-XXXXX",            // obrigatório, código do aplicativo Pushwoosh
    "geoZoneCluster": "EA1CE-69405"          // obrigatório, ID do cluster obtido da solicitação /addGeoZoneCluster
  }
}
```

## listGeoZones

Recupera uma lista de Geozones para o aplicativo.


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

### Parâmetros do corpo da solicitação


| Parâmetro  <div style="width:150px"></div>    | Tipo <div style="width:80px"></div>   | Obrigatório | Descrição |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |


### Exemplo de solicitação

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "application": "XXXXX-XXXXX"             // obrigatório, código do aplicativo Pushwoosh
  }
}
```
## listGeoZoneClusters

Recupera uma lista de clusters de Geozone para o aplicativo.

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


### Parâmetros do corpo da solicitação


| Parâmetro <div style="width:150px"></div>   | Tipo <div style="width:80px"></div>    | Obrigatório | Descrição |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Sim | [Token de acesso da API](/pt/developer/api-reference/api-identifiers/#api-access-token) do Painel de Controle da Pushwoosh. |
| **application** | `string` | Sim | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |


### Exemplo de solicitação

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // obrigatório, token de acesso da API do Controle da Pushwoosh
    "application": "XXXXX-XXXXX"             // obrigatório, código do aplicativo Pushwoosh
  }
}
```