Passer au contenu

API Geozones

getNearestZone

Anchor link to

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

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

Paramètres du corps de la requête

Anchor link to
ParamètreType
RequisDescription
applicationstringOuiCode d’application Pushwoosh
hwidstringOuiID matériel de l’appareil utilisé dans la requête /registerDevice.
latstringOuiLatitude de l’appareil.
lngstringOuiLongitude de l’appareil.

Exemple de requête

Anchor link to
{
"request": {
"application": "APPLICATION_CODE",
"hwid": "HWID",
"lat": 10.12345,
"lng": 28.12345
}
}

Exemple PHP

Anchor link to
// 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 'Nom de la zone : ' . $response->getResponse()->getName();
print 'Latitude : ' . $response->getResponse()->getLat();
print 'Longitude : ' . $response->getResponse()->getLng();
print 'Portée : ' . $response->getResponse()->getRange();
print 'Distance : ' . $response->getResponse()->getDistance();
} else {
print 'Oups, l\'opération a échoué :-(';
print 'Code de statut : ' . $response->getStatusCode();
print 'Message de statut : ' . $response->getStatusMessage();
}

addGeoZone

Anchor link to

Ajoute une Geozone à une application spécifique.

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh
geozonesarrayOuiParamètres de la Geozone sous forme de tableau JSON.
geozones.namestringOuiNom de la Geozone.
geozones.latstringRequis pour un cercle.Latitude de la Geozone. Omettre lorsque polygon est défini — une geozone polygonale déduit son propre centre.
geozones.lngstringRequis pour un cercle.Longitude de la Geozone. Omettre lorsque polygon est défini — une geozone polygonale déduit son propre centre.
geozones.cooldownintegerOuiPériode de silence après l’envoi d’une notification (en secondes).
geozones.rangeintegerRequis pour un cercle.Portée de la Geozone en mètres. Minimum 50. Omettre lorsque polygon est défini — une geozone polygonale déduit sa propre portée.
geozones.polygonobjectNonTransforme la geozone en polygone au lieu d’un cercle. Ne peut pas être combiné avec lat/lng/range — l’envoi des deux est rejeté. Voir Geozones polygonales.
geozones.contentstring or objectRequis si presetCode est vide.Contenu du message de la Geozone.
geozones.presetCodestringRequis si content est vide.Preset de push à utiliser à la place du content.
geozones.clusterstringNonSpécifiez null pour dissocier un cluster de la Geozone.
geozones.campaignstringNonSpé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.timetableobjectNonDéfinit les intervalles de l’horaire.

Exemple de requête

Anchor link to
{
"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 geozone.
"content": "Lorem ipsum dolor sit amet,
consectetur adipiscing elit.", // ou objet
"presetCode": "AAAAA-BBBBB", // optionnel. Un 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"
}
]
}
}]
}
}

Ajout de plusieurs geozones à la fois

Anchor link to

geozones accepte un tableau, donc un seul appel peut créer un lot entier. Le lot est validé dans son ensemble avant toute écriture : si une entrée est rejetée, l’appel échoue et aucune geozone de cette requête n’est créée. L’erreur nomme l’entrée incriminée par sa position dans le tableau, comptée à partir de zéro :

{
"status_code": 210,
"status_message": "geozones[301]: range: range must be at least 50 meters"
}

Corrigez cette entrée et renvoyez la requête. En cas de succès, GeoZones contient les nouveaux ID numériques dans le même ordre que les entrées que vous avez envoyées.

Les lots de plus de 500 entrées sont acceptés et divisés en morceaux en interne. Le tableau entier est toujours validé avant la première écriture, mais l’écriture elle-même n’est pas atomique entre les morceaux : une entrée peut passer la validation et échouer tout de même à être écrite, par exemple si le preset qu’elle nomme est supprimé entre-temps. Dans ce cas, l’appel renvoie 200 avec les ID qui ont été écrits plus un tableau Errors nommant l’entrée qui a arrêté l’exécution, de sorte que rien de ce qui a été créé n’est perdu :

{
"status_code": 200,
"status_message": "OK",
"response": {
"GeoZones": [100016750, 100016751],
"Errors": [{ "index": 2, "message": "preset not found" }]
}
}

Errors est absent lorsque chaque entrée a été écrite, donc une réponse entièrement réussie est inchangée. Un tableau GeoZones plus court que le tableau que vous avez envoyé signifie toujours que certaines entrées n’ont pas été créées.

Geozones polygonales

Anchor link to

Envoyez polygon au lieu de lat/lng/range pour faire de la geozone un polygone. polygon.vertices est un anneau ordonné de points {lat, lng} décrivant le contour de la forme :

{
"request": {
"auth": "yxoPUlwqm............pIyEX4H",
"application": "XXXXX-XXXXX",
"geozones": [{
"name": "Downtown mall — ground floor",
"cooldown": 60,
"polygon": {
"vertices": [
{ "lat": 40.70087797, "lng": -73.931851387 },
{ "lat": 40.70112456, "lng": -73.931602211 },
{ "lat": 40.70095321, "lng": -73.930987654 },
{ "lat": 40.70068912, "lng": -73.931233456 }
]
},
"content": "Welcome! Enjoy 15% off your first purchase today."
}]
}
}

lat, lng, et range sont dérivés de l’anneau — le cercle qu’un appareil surveille réellement est centré sur la forme avec un rayon atteignant son sommet le plus éloigné (minimum 50 m). L’envoi de polygon avec lat/lng/range est rejeté.

Vous pouvez envoyer l’anneau ouvert ou fermé — si le dernier sommet répète le premier, le serveur supprime ce doublon de fermeture avant la validation. Validation des sommets, sur l’anneau résultant : 3 à 100 sommets distincts. L’anneau est également rejeté si ses points sont colinéaires, si ses arêtes s’auto-intersectent, ou s’il traverse l’antiméridien.

updateGeoZone

Anchor link to

Met à jour les propriétés de la Geozone.

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
geoZoneIdstringOuiID de Geozone de la requête /addGeoZone.
namestringNonNouveau nom de Geozone.
cooldownintegerNonDélai de récupération à mettre à jour, en secondes.
statusintegerNon0 - désactivée, 1 - activée.
contentstringNonContenu pour la notification push de la Geozone. Ne peut pas être utilisé avec presetCode.
clusterstringNonNouveau nom de cluster. Spécifiez null pour dissocier le cluster de la Geozone.
campaignstringNonNouvel 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.
latnumberNonLatitude de la Geozone. Ne peut pas être combiné avec polygon.
lngnumberNonLongitude de la Geozone. Ne peut pas être combiné avec polygon.
rangeintegerNonNouvelle portée en mètres. Ne peut pas être combiné avec polygon.
polygonobjectNonNouvel anneau de sommets {lat, lng} — remplace la forme et en dérive à nouveau lat/lng/range. Voir Geozones polygonales. Fonctionne dans les deux sens : envoyez-le sur une geozone circulaire existante pour la transformer en polygone, ou envoyez un anneau vide ({"vertices": []}) sur une geozone polygonale existante pour la retransformer en cercle. Omettez complètement polygon pour laisser la forme inchangée. Même validation des sommets que addGeoZone.
timetableobjectNonHoraire de la Geozone. Voir plus d’informations ci-dessous.

Exemple de requête

Anchor link to
{
"request": {
"auth": "yxoPUlwqm............pIyEX4H", // requis, jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
"geoZoneId": 100016750, // requis, de la méthode /addGeoZone
"name": "new geozone name", // optionnel
"cooldown": 222, // en secondes, optionnel
"status": 0, // optionnel, 0 - désactivée, 1 - activée
"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 geozone
"lng": 12.523, // optionnel, longitude de la geozone
"range": 500, // optionnel, portée 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"
}
]
}
}
}

deleteGeoZone

Anchor link to

Supprime les Geozones de l’application.

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh
geozonesstringOuiTableau d’ID ou un ID unique d’une Geozone à supprimer.

Exemple de requête

Anchor link to
{
"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 geozones
}
}

addGeoZoneCluster

Anchor link to

Ajoute un Cluster de Geozones à l’application.

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh
namestringOuiNom du cluster.
cooldownintegerOuiUn délai avant qu’un utilisateur unique puisse recevoir le même message du Cluster de Geozones, en secondes.

Exemple de requête

Anchor link to
{
"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

Anchor link to

Supprime un Cluster de Geozones de l’application.

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh
geoZoneClusterstringOuiID du cluster de Geozones à supprimer.

Exemple de requête

Anchor link to
{
"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 de la requête /addGeoZoneCluster
}
}

listGeoZones

Anchor link to

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

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh

Exemple de requête

Anchor link to
{
"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

Anchor link to

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

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

Paramètres du corps de la requête

Anchor link to
Paramètre
Type
RequisDescription
authstringOuiJeton d’accès API depuis le Panneau de Contrôle Pushwoosh.
applicationstringOuiCode d’application Pushwoosh

Exemple de requête

Anchor link to
{
"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
}
}