API Geozones
getNearestZone
Anchor link toAppelé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/getNearestZoneParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| application | string | Oui | Code d’application Pushwoosh |
| hwid | string | Oui | ID matériel de l’appareil utilisé dans la requête /registerDevice. |
| lat | string | Oui | Latitude de l’appareil. |
| lng | string | Oui | Longitude 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 toAjoute une Geozone à une application spécifique.
POST https://api.pushwoosh.com/json/1.3/addGeoZoneParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code d’application Pushwoosh |
| geozones | array | Oui | Paramètres de la Geozone sous forme de tableau JSON. |
| geozones.name | string | Oui | Nom de la Geozone. |
| geozones.lat | string | Requis pour un cercle. | Latitude de la Geozone. Omettre lorsque polygon est défini — une geozone polygonale déduit son propre centre. |
| geozones.lng | string | Requis pour un cercle. | Longitude de la Geozone. Omettre lorsque polygon est défini — une geozone polygonale déduit son propre centre. |
| geozones.cooldown | integer | Oui | Période de silence après l’envoi d’une notification (en secondes). |
| geozones.range | integer | Requis 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.polygon | object | Non | Transforme 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.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 à utiliser à la place du 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
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 togeozones 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 toEnvoyez 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 toMet à jour les propriétés de la Geozone.
POST https://api.pushwoosh.com/json/1.3/updateGeoZoneParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| geoZoneId | string | Oui | ID de Geozone de la requête /addGeoZone. |
| name | string | Non | Nouveau nom de Geozone. |
| cooldown | integer | Non | Délai de récupération à mettre à jour, en secondes. |
| status | integer | Non | 0 - désactivée, 1 - activée. |
| content | string | Non | Contenu pour 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. Ne peut pas être combiné avec polygon. |
| lng | number | Non | Longitude de la Geozone. Ne peut pas être combiné avec polygon. |
| range | integer | Non | Nouvelle portée en mètres. Ne peut pas être combiné avec polygon. |
| polygon | object | Non | Nouvel 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. |
| timetable | object | Non | Horaire 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 toSupprime les Geozones de l’application.
POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code d’application Pushwoosh |
| geozones | string | Oui | Tableau 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 toAjoute un Cluster de Geozones à l’application.
POST https://api.pushwoosh.com/json/1.3/addGeoZoneClusterParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code d’application Pushwoosh |
| 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
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 toSupprime un Cluster de Geozones de l’application.
POST https://api.pushwoosh.com/json/1.3/deleteGeoZoneClusterParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code d’application Pushwoosh |
| geoZoneCluster | string | Oui | ID 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 toRécupère une liste de Geozones pour l’application.
POST https://api.pushwoosh.com/json/1.3/listGeoZonesParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code 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 toRécupère une liste de clusters de Geozones pour l’application.
POST https://api.pushwoosh.com/json/1.3/listGeoZoneClustersParamètres du corps de la requête
Anchor link to| Paramètre | Type | Requis | Description |
|---|---|---|---|
| auth | string | Oui | Jeton d’accès API depuis le Panneau de Contrôle Pushwoosh. |
| application | string | Oui | Code 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 }}