Geozones API

API methods to manage Geozones

getNearestZone

Called internally from the SDK. Gets the parameters of the nearest geozone and a distance to it. Also records the device location for geo push notifications.

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

Called internally from the SDK. Gets the parameters of the nearest geozone and a distance to it. Also records the device location for geo push notifications.

Request Body

NameTypeDescription

application*

string

Pushwoosh application code.

hwid*

string

Hardware device id used in /registerDevice request.

lat*

string

Latitude of the device.

lng*

string

Longitude of the device.

{
   "status_code":200,
   "status_message":"OK",
   "response": {  // returns zone which is the closest to the position provided in the request
      "name":"zone name",
      "lat":42,
      "lng":42,
      "range":1234,         // range in meters
      "distance":4715784 // distance in meters
   }
}
Example
    {
      "request": {
        "application": "APPLICATION_CODE", // required, Pushwoosh application code
        "hwid": "HWID", // required, hardware device ID used in /registerDevice function call
        "lat": 10.12345, // required, latitude of the device
        "lng": 28.12345 // required, longitude of the device
      }
    }
<?php
//see http://gomoob.github.io/php-pushwoosh/get-nearest-zone.html
use Gomoob\Pushwoosh\Model\Request\GetNearestZoneRequest;

// Creates the request instance
$request = GetNearestZoneRequest::create()
    ->setHwid('HWID')
    ->setLat(10.12345)
    ->setLng(28.12345);

// Call the '/getNearestZone' Web Service
$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 'Oups, the operation failed :-('; 
    print 'Status code : ' . $response->getStatusCode();
    print 'Status message : ' . $response->getStatusMessage();
}

addGeoZone

Adds a Geozone to an app.

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

Adds a Geozone to a particular app.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

application*

string

Pushwoosh application code.

geozones*

array

Geozone parameters. Can be a JSON array. See details in a request example below.

geozones.name*

string

Geozone name.

geozones.lat*

string

Geozone latitude.

geozones.lng*

string

Geozone longitude.

geozones.cooldown*

integer

Silent period after sending a notification (in seconds).

geozones.range*

integer

in meters, from 50 to 1000. Range of the geozone.

geozones.content*

string or object

Geozone message's content. Required if 'presetCode' field is empty.

geozones.presetCode

string

Push preset could be used instead of content field. Note: REQUIRED if content field is empty.

geozones.cluster

string

Specify null to unbind cluster from GeoZone.

geozones.campaign

string

Specify null to unbind Campaign from GeoZone. If omit then Campaign value will not be changed. Has higher priority than Campaign from preset

geozones.timetable

object

Sets timetable intervals.

{
    "status_code": 200,
    "status_message": "OK",
    "response": {
        "GeoZones": [550]	//geozone ids
    }
}
Example
{
    "request": {
        "auth": "yxoPUlwqm…………pIyEX4H", // API access token from Pushwoosh Control Panel
        "application": "XXXXX-XXXXX", // Pushwoosh application code
        "geozones": [{
            "name": "Statue of George", // required. Geozone name.
            "lat": "40.70087797", // required. Geozone latitude.
            "lng": "-73.931851387", // required. Geozone longitude.
            "cooldown": 60, // in seconds, required. Silent period after sending a notification.
            "range": 50, // in meters, from 50 to 1000, required. Range of the geozone. 
            "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // or object, required if 'presetCode' field is empty.
            "presetCode": "AAAAA-BBBBB", // optional. Push preset could be used instead of content field. Note: REQUIRED if content field is empty
            "cluster": "GEOZONE CLUSTER CODE", // optional. Cluster's cooldown period will be applied. Specify null to unbind cluster from GeoZone. 
            "campaign": "CAMPAIGN_CODE", // optional. Specify null to unbind Campaign from GeoZone. If omit then Campaign value will not be changed. Has higher priority than Campaign from preset
            "timetable": { // optional
                "timezone": 1234, // in seconds
                "Mon": [ // available days: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Push sending stopped for missing day in list
                    {
                      "start": "04:11",
                      "stop": "12:00"
                    }
                ],
                "Sun": [
                   { // one or two intervals
                     "start": "01:11",
                     "stop": "17:00"
                   },
                   {
                     "start": "18:01",
                     "stop": "23:59"
                   }
                ]
             }
        }]
    }
}

updateGeoZone

Updates Geozone properties.

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

Updates Geozone properties.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

geoZoneId*

string

Geozone ID from /addGeoZone request.

name

string

New Geozone name.

cooldown

integer

Cooldown to update, in seconds.

status

integer

0 - deactivated, 1 - activated.

content

string

Content for Geozone push notification. Cannot be used with presetCode.

cluster

string

New cluster name. Specify 'null' to unbind cluster from Geozone.

campaign

string

New campaign ID. Specify 'null' to unbind Campaign from Geozone. If omitted, Campaign value won't be changed. Has higher priotiy than a Campaign from a preset.

lat

number

Geozone latitude.

lng

number

Geozone longitude.

range

integer

New range in meters.

timetable

object

Geozone timetable. See more info below.

{
    "status_code": 200,
    "status_message": "OK",
    "response": null
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

Example
{
    "request": {
        "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
        "geoZoneId": 100016750, // required, from /addGeoZone method
        "name": "new geozone name", // optional
        "cooldown": 222, // in seconds, optional
        "status": 0, // optional, 0 - deactivated, 1 - activated
        "presetCode": "BBBBB-AAAAA", // optional, cannot be used along with "content"
        "content": "new geozone content", // optional, cannot be used along with "presetCode"
        "cluster": "GEOZONE CLUSTER CODE", // optional. Specify null to unbind cluster from GeoZone
        "campaign": "CAMPAIGN_CODE", // optional. Specify null to unbind Campaign from GeoZone. If omit then Campaign value will not be changed. Has higher priority than Campaign from preset
        "lat" : 10.56, // optional, geozone latitude 
        "lng" : 12.523,// optional, geozone longitude 
        "range" : 500, // optional, geozone range 
        "timetable": { // optional
                "timezone": 1234, // in seconds
                "Mon": [ // available days: Mon, Tue, Wed, Thu, Fri, Sat, Sun. Push sending stopped for missing day in list
                    {
                      "start": "04:11",
                      "stop": "12:00"
                    }
                ],
                "Sun": [
                   { // one or two intervals
                     "start": "01:11",
                     "stop": "17:00"
                   },
                   {
                     "start": "18:01",
                     "stop": "23:59"
                   }
                ]
             }
    }
}

deleteGeoZone

Removes Geozones from the app.

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

Removes Geozones from the app.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

application*

string

Pushwoosh application code.

geozones*

string

Array of IDs or a single ID of a Geozone to remove.

{
    "status_code": 200,
    "status_message": "OK",
    "response": null
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

    {
       "request": {
         "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
         "application": "XXXXX-XXXXX", // required, Pushwoosh application code 
         "geozones": [550,526] // required, geozones IDs
       }
    }

addGeoZoneCluster

Adds Geozone Cluster to the app.

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

Adds Geozone Cluster to the app.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

application*

string

Pushwoosh application code.

name*

string

Cluster name.

cooldown*

integer

A delay before a single user can receive the same message from the Geozone Cluster, in seconds.

{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "GeoZoneCluster": "EA1CE-69405" //geozone cluster id
  }
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

Example
    {
        "request": {
            "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
            "application": "XXXXX-XXXXX", // required, Pushwoosh application code 
            "name": "Raccoon city", // required, cluster name 
            "cooldown": 3210 // required, in seconds
        }
    }

deleteGeoZoneCluster

Removes a Geozone Cluster from the app.

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

Removes a Geozone Cluster from the app.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

application*

string

Pushwoosh application code.

geoZoneCluster*

string

ID of the Geozone cluster to remove.

{
    "status_code": 200,
    "status_message": "OK",
    "response": null
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

Example
    {
       "request": {
         "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
         "application": "XXXXX-XXXXX", // required, Pushwoosh application code
         "geoZoneCluster": "EA1CE-69405" // required, cluster ID obtained from the /addGeoZoneCluster or /listGeoZoneClusters response
       }
    }

listGeoZones

Retrieves a list of Geozones for the app.

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

Retrieves a list of Geozones for the app.

Request Body

NameTypeDescription

auth*

string

API access token from Pushwoosh Control Panel.

application*

string

Pushwoosh application code.

{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "clusters": [
      {
        "name": "Geozones without Cluster",
        "geoZones": [
          {
            "id": 17528,
            "name": "Statue of George",
            "lat": 40.70088,
            "lng": -73.93185,
            "cooldown": 60,
            "range": 50,
            "presetCode": null,
            "content": {
              "default": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
            },
            "status": true,
            "campaign_id": 0,
            "timetable": null
          }
        ]
      }
    ]
  }
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

Example
    {
       "request":{
          "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
          "application": "XXXXX-XXXXX" // required, Pushwoosh application code 
       }
    }

listGeoZoneClusters

Retrieves a list of Geozone clusters for the app.

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

Retrieves a list of Geozone clusters for the app.

Request Body

NameTypeDescription

auth

string

API access token from Pushwoosh Control Panel.

application

string

Pushwoosh application code.

{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "clusters": [
      {
        "code": "AE2C4-4E070",
        "cooldown": 86400,
        "geozones": 1,
        "name": "Cluster on Times"
      },
      {
        "code": "4F244-17CDD",
        "cooldown": 86400,
        "geozones": 1,
        "name": "Cluster on Union"
      }
    ]
  }
}

For Custom Plan subscriptions only. For more details, please contact our Sales team.

Example
    {
       "request":{
          "auth": "yxoPUlwqm…………pIyEX4H", // required, API access token from Pushwoosh Control Panel
          "application": "XXXXX-XXXXX" // required, Pushwoosh application code 
       }
    }

Last updated

#1600: moved in-app statistics to in-apps, added a link to statistics

Change request updated