# API Geozones

## getNearestZone

Appelée en interne depuis le SDK. Récupère les paramètres de la géozone la plus proche et la distance qui l'en sépare. Enregistre également l'emplacement de l'appareil pour les notifications push géolocalisées.

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


### Paramètres du corps de la requête


| Paramètre | Type <div style="width:80px"></div> | Requis | Description |
|-----------|--------|:--------:|-------------|
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| **hwid** | `string` | Oui | [ID de l'appareil matériel (HWID)](/fr/developer/api-reference/api-identifiers/#hardware-id) utilisé dans la requête `/registerDevice`. |
| **lat** | `string` | Oui | Latitude de l'appareil. |
| **lng** | `string` | Oui | Longitude de l'appareil. |


### Exemple de requête

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

### Exemple en PHP

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

use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;

// Crée l'instance de la requête
$request = GetNearestZoneRequest::create()
    ->setHwid('HWID')
    ->setLat(10.12345)
    ->setLng(28.12345);

// Appelle le service 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

Ajoute une Geozone à une application spécifique.

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


### Paramètres du corps de la requête


| Paramètre <div style="width:150px"></div>  | Type <div style="width:80px"></div> | Requis | Description |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `array` | Oui | Paramètres de la Geozone sous forme de tableau JSON. |
| **geozones.name** | `string` | Oui | Nom de la Geozone. |
| **geozones.lat** | `string` | Oui | Latitude de la Geozone. |
| **geozones.lng** | `string` | Oui | Longitude de la Geozone. |
| **geozones.cooldown** | `integer` | Oui | Période de silence après l'envoi d'une notification (en secondes). |
| **geozones.range** | `integer` | Oui | Portée de la Geozone en mètres. Minimum 50. |
| **geozones.content** | `string or object` | Requis si `presetCode` est vide. | Contenu du message de la Geozone. |
| **geozones.presetCode** | `string` | Requis si `content` est vide. | [Preset de push](/fr/developer/api-reference/api-identifiers/#preset-code) à utiliser à la place de `content`. |
| **geozones.cluster** | `string` | Non | Spécifiez `null` pour dissocier un cluster de la Geozone. |
| **geozones.campaign** | `string` | Non | Spécifiez `null` pour dissocier une campagne de la Geozone. Si omis, la valeur de la campagne reste inchangée. Note : A une priorité plus élevée que la campagne dans le preset. |
| **geozones.timetable** | `object` | Non | Définit les intervalles de l'horaire. |


### Exemple de requête

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // Jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX",            // Code d'application Pushwoosh
    "geozones": [{
      "name": "Statue of George",            // requis. Nom de la Geozone.
      "lat": "40.70087797",                   // requis. Latitude de la Geozone.
      "lng": "-73.931851387",                 // requis. Longitude de la Geozone.
      "cooldown": 60,                         // en secondes, requis. Période de silence après l'envoi d'une notification
      "range": 50,                            // en mètres, minimum 50, requis. Portée de la géozone.
      "content": "Lorem ipsum dolor sit amet,
       consectetur adipiscing elit.",         // ou objet
      "presetCode": "AAAAA-BBBBB",            // optionnel. Le preset de push peut être utilisé à la place du contenu
      "cluster": "GEOZONE CLUSTER CODE",      // optionnel. La période de silence du cluster sera appliquée
      "campaign": "CAMPAIGN_CODE",            // optionnel. Spécifiez null pour dissocier la Campagne de la Geozone
      "timetable": {                          // optionnel
        "timezone": 1234,                     // en secondes
        "Mon": [                              // jours disponibles : Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envoi de push
          {
            "start": "04:11",
            "stop": "12:00"
          }
        ],
        "Sun": [
          {                                    // un ou deux intervalles
            "start": "01:11",
            "stop": "17:00"
          },
          {
            "start": "18:01",
            "stop": "23:59"
          }
        ]
      }
    }]
  }
}

```
## updateGeoZone

Met à jour les propriétés d'une Geozone.

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

### Paramètres du corps de la requête

| Paramètre <div style="width:150px"></div> | Type <div style="width:80px"></div> | Requis | Description |
|-----------|--------|:--------:|-------------|
| **auth** | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **geoZoneId** | `string` | Oui | [ID de la Geozone](/fr/developer/api-reference/api-identifiers/#geozone-id) depuis la requête `/addGeoZone`. |
| **name** | `string` | Non | Nouveau nom de la Geozone. |
| **cooldown** | `integer` | Non | Délai de réactivation à mettre à jour, en secondes. |
| **status** | `integer` | Non | 0 - désactivé, 1 - activé. |
| **content** | `string` | Non | Contenu de la notification push de la Geozone. Ne peut pas être utilisé avec `presetCode`. |
| **cluster** | `string` | Non | Nouveau nom de cluster. Spécifiez `null` pour dissocier le cluster de la Geozone. |
| **campaign** | `string` | Non | Nouvel ID de campagne. Spécifiez `null` pour dissocier la Campagne de la Geozone. Si omis, la valeur de la Campagne ne sera pas modifiée. A une priorité plus élevée qu'une Campagne d'un preset. |
| **lat** | `number` | Non | Latitude de la Geozone. |
| **lng** | `number` | Non | Longitude de la Geozone. |
| **range** | `integer` | Non | Nouvelle portée en mètres. |
| **timetable** | `object` | Non | Horaire de la Geozone. Voir plus d'informations ci-dessous. |

---


### Exemple de requête

```json
{ 
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "geoZoneId": 100016750,                  // requis, depuis la méthode /addGeoZone
    "name": "new geozone name",              // optionnel
    "cooldown": 222,                         // en secondes, optionnel
    "status": 0,                             // optionnel, 0 - désactivé, 1 - activé
    "presetCode": "BBBBB-AAAAA",             // optionnel, ne peut pas être utilisé avec "content"
    "content": "new geozone content",        // optionnel, ne peut pas être utilisé avec "presetCode"
    "cluster": "GEOZONE CLUSTER CODE",       // optionnel. Spécifiez null pour dissocier le cluster de la Geozone
    "campaign": "CAMPAIGN_CODE",             // optionnel. Spécifiez null pour dissocier la Campagne de la Geozone
    "lat": 10.56,                            // optionnel, latitude de la géozone
    "lng": 12.523,                           // optionnel, longitude de la géozone
    "range": 500,                            // optionnel, portée de la géozone
    "timetable": {                           // optionnel
      "timezone": 1234,                      // en secondes
      "Mon": [                               // jours disponibles : Mon, Tue, Wed, Thu, Fri, Sat, Sun. Envoi de push
        {
          "start": "04:11",
          "stop": "12:00"
        }
      ],
      "Sun": [
        {                                    // un ou deux intervalles
          "start": "01:11",
          "stop": "17:00"
        },
        {
          "start": "18:01",
          "stop": "23:59"
        }
      ]
    }
  }
}
```

## deleteGeoZone

Supprime des Geozones de l'application.

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

### Paramètres du corps de la requête


| Paramètre   <div style="width:150px"></div>   | Type <div style="width:80px"></div>   | Requis | Description |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| **geozones** | `string` | Oui | Tableau d'ID ou un [ID unique](/fr/developer/api-reference/api-identifiers/#geozone-id) d'une Geozone à supprimer. |



### Exemple de requête

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX",            // requis, code d'application Pushwoosh
    "geozones": [550, 526]                   // requis, ID des géozones
  }
}
```

## addGeoZoneCluster

Ajoute un Cluster de Geozones à l'application.

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


### Paramètres du corps de la requête

| Paramètre  <div style="width:150px"></div>  | Type <div style="width:80px"></div>    | Requis | Description |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| **name** | `string` | Oui | Nom du cluster. |
| **cooldown** | `integer` | Oui | Un délai avant qu'un utilisateur unique puisse recevoir le même message du Cluster de Geozones, en secondes. |


### Exemple de requête

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX",            // requis, code d'application Pushwoosh
    "name": "Raccoon city",                  // requis, nom du cluster
    "cooldown": 3210                         // requis, en secondes
  }
}
```

## deleteGeoZoneCluster

Supprime un Cluster de Geozones de l'application.


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


### Paramètres du corps de la requête


| Paramètre   <div style="width:150px"></div>        | Type  <div style="width:80px"></div>  | Requis | Description |
|-------------------|--------|:--------:|-------------|
| **auth**         | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application**  | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| **geoZoneCluster** | `string` | Oui | ID du cluster de Geozones à supprimer. |


### Exemple de requête

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX",            // requis, code d'application Pushwoosh
    "geoZoneCluster": "EA1CE-69405"          // requis, ID du cluster obtenu depuis la requête /addGeoZoneCluster
  }
}
```

## listGeoZones

Récupère une liste de Geozones pour l'application.


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

### Paramètres du corps de la requête


| Paramètre  <div style="width:150px"></div>    | Type <div style="width:80px"></div>   | Requis | Description |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |


### Exemple de requête

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX"             // requis, code d'application Pushwoosh
  }
}
```
## listGeoZoneClusters

Récupère une liste de clusters de Geozones pour l'application.

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


### Paramètres du corps de la requête


| Paramètre <div style="width:150px"></div>   | Type <div style="width:80px"></div>    | Requis | Description |
|-------------|--------|:--------:|-------------|
| **auth**    | `string` | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-identifiers/#api-access-token) depuis le Panneau de Contrôle Pushwoosh. |
| **application** | `string` | Oui | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |


### Exemple de requête

```json
{
  "request": {
    "auth": "yxoPUlwqm............pIyEX4H",  // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX"             // requis, code d'application Pushwoosh
  }
}
```