# 지오존 API

## getNearestZone

SDK에서 내부적으로 호출됩니다. 가장 가까운 지오존의 파라미터와 거리를 검색합니다. 또한 지오 푸시 알림을 위해 디바이스 위치를 기록합니다.

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


### 요청 본문 파라미터  


| 파라미터 | 타입 <div style="width:80px"></div> | 필수 | 설명 |
|-----------|--------|:--------:|-------------|
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| **hwid** | `string` | 예 | `/registerDevice` 요청에 사용된 [하드웨어 디바이스 ID](/ko/developer/api-reference/api-identifiers/#hardware-id)입니다. |
| **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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/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 or object` | `presetCode`가 비어 있는 경우 필수입니다. | 지오존 메시지 내용입니다. |
| **geozones.presetCode** | `string` | `content`가 비어 있는 경우 필수입니다. | `content` 대신 사용할 [푸시 프리셋](/ko/developer/api-reference/api-identifiers/#preset-code)입니다. |
| **geozones.cluster** | `string` | 아니요 | 지오존에서 클러스터를 해제하려면 `null`을 지정합니다. |
| **geozones.campaign** | `string` | 아니요 | 지오존에서 캠페인을 해제하려면 `null`을 지정합니다. 생략하면 캠페인 값은 변경되지 않습니다. 참고: 프리셋의 캠페인보다 우선순위가 높습니다. |
| **geozones.timetable** | `object` | 아니요 | 시간표 간격을 설정합니다. |


### 요청 예시  

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // Pushwoosh 제어판의 API 액세스 토큰
    "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",            // 선택 사항. content 대신 푸시 프리셋을 사용할 수 있습니다
      "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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **geoZoneId** | `string` | 예 | `/addGeoZone` 요청의 [지오존 ID](/ko/developer/api-reference/api-identifiers/#geozone-id)입니다. |
| **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",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `string` | 예 | 제거할 지오존의 ID 배열 또는 [단일 ID](/ko/developer/api-reference/api-identifiers/#geozone-id)입니다. |



### 요청 예시  

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| **name** | `string` | 예 | 클러스터 이름입니다. |
| **cooldown** | `integer` | 예 | 단일 사용자가 지오존 클러스터에서 동일한 메시지를 다시 받기까지의 지연 시간(초 단위)입니다. |


### 요청 예시 

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application**  | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| **geoZoneCluster** | `string` | 예 | 제거할 지오존 클러스터의 ID입니다. |


### 요청 예시   

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "application": "XXXXX-XXXXX",            // 필수, Pushwoosh 애플리케이션 코드
    "geoZoneCluster": "EA1CE-69405"          // 필수, /addGeoZoneCluster 요청에서 얻은 클러스터 ID
  }
}
```

## listGeoZones  

앱의 지오존 목록을 검색합니다.  


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

### 요청 본문 파라미터 


| 파라미터  <div style="width:150px"></div>    | 타입 <div style="width:80px"></div>   | 필수 | 설명 |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |


### 요청 예시  

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "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` | 예 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-identifiers/#api-access-token)입니다. |
| **application** | `string` | 예 | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |


### 요청 예시

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // 필수, Pushwoosh 제어판의 API 액세스 토큰
    "application": "XXXXX-XXXXX"             // 필수, Pushwoosh 애플리케이션 코드
  }
}
```