# API Геозон

## getNearestZone

Вызывается внутренне из SDK. Получает параметры ближайшей геозоны и расстояние до нее. Также записывает местоположение устройства для гео-пушей.

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


### Параметры тела запроса


| Параметр | Тип <div style="width:80px"></div> | Обязательный | Описание |
|-----------|--------|:--------:|-------------|
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |
| **hwid** | `string` | Да | [Аппаратный ID устройства (HWID)](/ru/developer/api-reference/api-identifiers/#hardware-id), используемый в запросе `/registerDevice`. |
| **lat** | `string` | Да | Широта устройства. |
| **lng** | `string` | Да | Долгота устройства. |


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

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

### Пример на PHP

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

use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;

// Создает экземпляр запроса
$request = GetNearestZoneRequest::create()
    ->setHwid('HWID')
    ->setLat(10.12345)
    ->setLng(28.12345);

// Вызов веб-сервиса '/getNearestZone'
$response = $pushwoosh->getNearestZone($request);

if ($response->isOk()) {
    print 'Название зоны : ' . $response->getResponse()->getName();
    print 'Широта : ' . $response->getResponse()->getLat();
    print 'Долгота : ' . $response->getResponse()->getLng();
    print 'Радиус : ' . $response->getResponse()->getRange();
    print 'Расстояние : ' . $response->getResponse()->getDistance();
} else {
    print 'Упс, операция не удалась :-(';
    print 'Код статуса : ' . $response->getStatusCode();
    print 'Сообщение статуса : ' . $response->getStatusMessage();
}
```


## addGeoZone

Добавляет Геозону в указанное приложение.

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


### Параметры тела запроса


| Параметр <div style="width:150px"></div>  | Тип <div style="width:80px"></div> | Обязательный | Описание |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `array` | Да | Параметры геозоны в виде JSON-массива. |
| **geozones.name** | `string` | Да | Название геозоны. |
| **geozones.lat** | `string` | Да | Широта геозоны. |
| **geozones.lng** | `string` | Да | Долгота геозоны. |
| **geozones.cooldown** | `integer` | Да | Период тишины после отправки уведомления (в секундах). |
| **geozones.range** | `integer` | Да | Радиус геозоны в метрах. Минимум 50. |
| **geozones.content** | `string или object` | Требуется, если `presetCode` пуст. | Содержимое сообщения геозоны. |
| **geozones.presetCode** | `string` | Требуется, если `content` пуст. | [Пресет пуша](/ru/developer/api-reference/api-identifiers/#preset-code) для использования вместо `content`. |
| **geozones.cluster** | `string` | Нет | Укажите `null`, чтобы отвязать кластер от Геозоны. |
| **geozones.campaign** | `string` | Нет | Укажите `null`, чтобы отвязать кампанию от Геозоны. Если параметр опущен, значение кампании останется неизменным. Примечание: имеет более высокий приоритет, чем кампания в пресете. |
| **geozones.timetable** | `object` | Нет | Устанавливает интервалы расписания. |


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

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // Токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX",            // Код приложения Pushwoosh
    "geozones": [{
      "name": "Statue of George",            // обязательно. Название геозоны.
      "lat": "40.70087797",                   // обязательно. Широта геозоны.
      "lng": "-73.931851387",                 // обязательно. Долгота геозоны.
      "cooldown": 60,                         // в секундах, обязательно. Период тишины после отправки уведомления
      "range": 50,                            // в метрах, минимум 50, обязательно. Радиус геозоны.
      "content": "Lorem ipsum dolor sit amet,
       consectetur adipiscing elit.",         // или объект
      "presetCode": "AAAAA-BBBBB",            // опционально. Пресет пуша может использоваться вместо контента
      "cluster": "GEOZONE CLUSTER CODE",      // опционально. Будет применен период тишины кластера
      "campaign": "CAMPAIGN_CODE",            // опционально. Укажите null, чтобы отвязать Кампанию от Геозоны
      "timetable": {                          // опционально
        "timezone": 1234,                     // в секундах
        "Mon": [                              // доступные дни: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Отправка пушей
          {
            "start": "04:11",
            "stop": "12:00"
          }
        ],
        "Sun": [
          {                                    // один или два интервала
            "start": "01:11",
            "stop": "17:00"
          },
          {
            "start": "18:01",
            "stop": "23:59"
          }
        ]
      }
    }]
  }
}

```
## updateGeoZone

Обновляет свойства Геозоны.

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

### Параметры тела запроса

| Параметр <div style="width:150px"></div> | Тип <div style="width:80px"></div> | Обязательный | Описание |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **geoZoneId** | `string` | Да | [ID Геозоны](/ru/developer/api-reference/api-identifiers/#geozone-id) из запроса `/addGeoZone`. |
| **name** | `string` | Нет | Новое название Геозоны. |
| **cooldown** | `integer` | Нет | Период тишины для обновления, в секундах. |
| **status** | `integer` | Нет | 0 - деактивирована, 1 - активирована. |
| **content** | `string` | Нет | Контент для пуш-уведомления Геозоны. Не может использоваться вместе с `presetCode`. |
| **cluster** | `string` | Нет | Новое название кластера. Укажите `null`, чтобы отвязать кластер от Геозоны. |
| **campaign** | `string` | Нет | Новый ID кампании. Укажите `null`, чтобы отвязать Кампанию от Геозоны. Если параметр опущен, значение Кампании не изменится. Имеет более высокий приоритет, чем Кампания из пресета. |
| **lat** | `number` | Нет | Широта геозоны. |
| **lng** | `number` | Нет | Долгота геозоны. |
| **range** | `integer` | Нет | Новый радиус в метрах. |
| **timetable** | `object` | Нет | Расписание Геозоны. См. дополнительную информацию ниже. |

---


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

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "geoZoneId": 100016750,                  // обязательно, из метода /addGeoZone
    "name": "new geozone name",              // опционально
    "cooldown": 222,                         // в секундах, опционально
    "status": 0,                             // опционально, 0 - деактивирована, 1 - активирована
    "presetCode": "BBBBB-AAAAA",             // опционально, не может использоваться вместе с "content"
    "content": "new geozone content",        // опционально, не может использоваться вместе с "presetCode"
    "cluster": "GEOZONE CLUSTER CODE",       // опционально. Укажите null, чтобы отвязать кластер от Геозоны
    "campaign": "CAMPAIGN_CODE",             // опционально. Укажите null, чтобы отвязать Кампанию от Геозоны
    "lat": 10.56,                            // опционально, широта геозоны
    "lng": 12.523,                           // опционально, долгота геозоны
    "range": 500,                            // опционально, радиус геозоны
    "timetable": {                           // опционально
      "timezone": 1234,                      // в секундах
      "Mon": [                               // доступные дни: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Отправка пушей
        {
          "start": "04:11",
          "stop": "12:00"
        }
      ],
      "Sun": [
        {                                    // один или два интервала
          "start": "01:11",
          "stop": "17:00"
        },
        {
          "start": "18:01",
          "stop": "23:59"
        }
      ]
    }
  }
}
```

## deleteGeoZone

Удаляет Геозоны из приложения.

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

### Параметры тела запроса


| Параметр   <div style="width:150px"></div>   | Тип <div style="width:80px"></div>   | Обязательный | Описание |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `string` | Да | Массив ID или [один ID](/ru/developer/api-reference/api-identifiers/#geozone-id) Геозоны для удаления. |



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

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX",            // обязательно, код приложения Pushwoosh
    "geozones": [550, 526]                   // обязательно, ID геозон
  }
}
```

## addGeoZoneCluster

Добавляет Кластер Геозон в приложение.

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


### Параметры тела запроса

| Параметр  <div style="width:150px"></div>  | Тип <div style="width:80px"></div>    | Обязательный | Описание |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |
| **name** | `string` | Да | Название кластера. |
| **cooldown** | `integer` | Да | Задержка перед тем, как один пользователь сможет получить то же самое сообщение из Кластера Геозон, в секундах. |


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

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX",            // обязательно, код приложения Pushwoosh
    "name": "Raccoon city",                  // обязательно, название кластера
    "cooldown": 3210                         // обязательно, в секундах
  }
}
```

## deleteGeoZoneCluster

Удаляет Кластер Геозон из приложения.


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


### Параметры тела запроса


| Параметр   <div style="width:150px"></div>        | Тип  <div style="width:80px"></div>  | Обязательный | Описание |
|-------------------|--------|:--------:|-------------|
| **auth**         | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application**  | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |
| **geoZoneCluster** | `string` | Да | ID кластера Геозон для удаления. |


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

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX",            // обязательно, код приложения Pushwoosh
    "geoZoneCluster": "EA1CE-69405"          // обязательно, ID кластера, полученный из запроса /addGeoZoneCluster
  }
}
```

## listGeoZones

Получает список Геозон для приложения.


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

### Параметры тела запроса


| Параметр  <div style="width:150px"></div>    | Тип <div style="width:80px"></div>   | Обязательный | Описание |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |


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

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX"             // обязательно, код приложения Pushwoosh
  }
}
```
## listGeoZoneClusters

Получает список кластеров Геозон для приложения.

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


### Параметры тела запроса


| Параметр <div style="width:150px"></div>   | Тип <div style="width:80px"></div>    | Обязательный | Описание |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Да | [Токен доступа API](/ru/developer/api-reference/api-identifiers/#api-access-token) из Панели управления Pushwoosh. |
| **application** | `string` | Да | [Код приложения Pushwoosh](/ru/developer/api-reference/api-identifiers/#application-code) |


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

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // обязательно, токен доступа API из Панели управления Pushwoosh
    "application": "XXXXX-XXXXX"             // обязательно, код приложения Pushwoosh
  }
}
```