Cette API est destinée à créer des campagnes automatiquement. L'application de la campagne est à personnaliser sur la plateforme Sinch pour pouvoir être dupliquée par cette API. Les statistiques d'une campagne sont disponibles après la date d'envoi de cette dernière.
Les requêtes API décrites plus bas doivent être faire sur https://api.myelefant.com excepté la connexion utilisateur dont l'URL est https://platform.myelefant.com/api/login.
Le contenu de toutes les réponses HTTP sont au format JSON. Une réponse dont le statut HTTP est 400 indique une erreur d'utilisation de l'API. Une réponse dont le statut HTTP est 401 indique une erreur authentification. En cas d'erreur, l'attribut errors documente les erreurs.
Les chaînes de caractères envoyées vers le service doivent être encodées en UTF-8 sauf indication contraire. De même, les chaînes de caractères que vous recevez sont encodées en UTF-8.
Excepté l'authentification, toutes les requêtes POST acceptent deux types de contenu.
Content-Type: application/x-www-form-urlencoded
permet de poster des paramètres « url encodés » qui est le format standard des formulaires web.Content-Type: application/json
permet de poster les paramètes dans un objet JSON.
Un encoding différent de l'UTF-8 peut être spécifié dans le paramètre charset de la façon suivante.
Content-Type: application/json; charset=utf-16
Demandez une clé secrète pour utiliser l'API sans le mot de passe du compte. Si nous l'avons générée, elle est disponible sur la page Options de Sinch. Cette clé doit être stockée sur votre serveur de façon sécurisée et ne doit pas être diffusée.
Pour utiliser les autres points d'API, il faut demander un token d'accès avec la clé secrète. Cette demande est décrite ci-dessous et doit être faite de serveur à serveur. Un token d'accès vous sera fourni dans la réponse et servira à vous identifier dans toutes les autres requêtes. Le token d'accès expire au bout de 2h. Il faudra en obtenir un autre après ce délai.
https://api.myelefant.com/v1/token
POST
Authorization: Basic <secret key>
Remplacer <secret key>
par votre clé secrète.
POST /api/token HTTP/1.1 Host: api.myelefant.com Content-Length: 0 Accept: application/json Authorization: Basic NWM1MDQyNzAtYzUwYi00MDgxLTk0ZWMtZGFkODQyMWQyOTRmOjc2NWYzMTVlLTIwM2QtNGJjNC05ZmExLTkyNWRkMGJlODUxMQ== Accept-Encoding: gzip
curl 'https://api.myelefant.com/v1/token' -X POST -H 'Authorization: Basic NWM1MDQyNzAtYzUwYi00MDgxLTk0ZWMtZGFkODQyMWQyOTRmOjc2NWYzMTVlLTIwM2QtNGJjNC05ZmExLTkyNWRkMGJlODUxMQ==' -H 'Accept-Encoding: gzip' -H 'Accept: application/json' -H 'Content-Length: 0' --compressed
import requests response = requests.post( 'https://api.myelefant.com/v1/token', headers={'Authorization': 'Basic NWM1MDQyNzAtYzUwYi00MDgxLTk0ZWMtZGFkODQyMWQyOTRmOjc2NWYzMTVlLTIwM2QtNGJjNC05ZmExLTkyNWRkMGJlODUxMQ=='} )
La réponse en JSON contient le token d'accès à ajouter dans l'en-tête Authorization des autres requêtes.
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 119 {"access_token": "vNjIyZTAyNWQtYjRkOC00OWNiLThiY2UtZWRhYTJjYTRkMWQ0", "expires": "2016-08-12T10:45:04", "success": true}
En cas d'erreur le statut HTTP est 401 et la réponse en JSON contient le message d'erreur dans l'attribut errors.
HTTP/1.1 401 UNAUTHORIZED Content-Type: application/json Content-Length: 50 {"errors": "Invalid secret key", "success": false}
Sauf indication contraire, le token d'accès obtenu doit être ajouté dans l'en-tête Authorization des autres requêtes de la façon suivante.
Authorization: Bearer vNjIyZTAyNWQtYjRkOC00OWNiLThiY2UtZWRhYTJjYTRkMWQ0
Si le token d'accès n'est pas valide ou expiré, le status de la réponse sera 401.
HTTP/1.1 401 UNAUTHORIZED Content-Type: application/json Content-Length: 73 Access-Control-Allow-Origin: * {"errors": {"Authorization": ["Invalid access token"]}, "success": false}
Pour utiliser l'API, il est nécessaire de s'authentifier avec votre compte Sinch. Un token vous sera fourni dans la réponse et servira à vous identifier dans toutes les autres requêtes. Le token expire au bout de 2h. Il faudra en obtenir un autre après ce délai.
https://api.myelefant.com/v1/authenticate
POST
Content-Type: application/x-www-form-urlencoded
email=user%40example.com&password=mypass
Les paramètres sont au format application/x-www-form-urlencoded.
POST /api/authenticate HTTP/1.1 Host: api.myelefant.com Content-Length: 48 Accept: application/json Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Accept-Encoding: gzip, deflate email=alice%40exemple.org&password=monMotDePasse
curl 'https://api.myelefant.com/v1/authenticate' -H 'Accept-Encoding: gzip' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'email=alice%40exemple.org&password=monMotDePasse' --compressed
import requests response = requests.post( 'https://api.myelefant.com/v1/authenticate', {'email': 'alice@example.org', 'password': 'monMotDePasse'} )
La réponse en JSON contient le token d'authentification à préciser dans l'en-tête token de toutes les autres requêtes.
HTTP/1.1 200 OK Content-Type: application/json Content-Length: 66 Access-Control-Allow-Origin: * {"token": "9032e61f-2eca-4464-bfad-3cf9f6f9aa54", "success": true}
En cas d'erreur le statut HTTP est 400 et la réponse en JSON contient le message d'erreur dans l'attribut errors.
HTTP/1.1 400 BAD REQUEST Content-Type: application/json Content-Length: 51 Access-Control-Allow-Origin: * {"errors": "Authentication fail", "success": false}
Le token obtenu doit être ajouté dans l'en-tête token des autres requêtes de la façon suivante.
token: 9032e61f-2eca-4464-bfad-3cf9f6f9aa54
Si le token n'est pas valide ou expiré, le status de la réponse sera 401.
HTTP/1.1 401 UNAUTHORIZED Content-Type: application/json Content-Length: 58 Access-Control-Allow-Origin: * {"errors": {"token": ["Invalid token"]}, "success": false}
La connexion utilisateur permet de démarrer une session utilisateur sans son mot de passe. Il est nécessaire d'avoir un token d'accès obtenu depuis votre serveur grâce à votre clé secrète. L'utilisateur doit effectuer la requête suivante avec son navigateur. Placez un lien sur votre site par exemple.
Attention, c'est la seule requête qui se fait sur https://platform.myelefant.com.
https://platform.myelefant.com/api/login
GET
GET /api/login?access_token=ZWU5YjU2NWUtZjM4NS00OWYyLTg5YmMtZjA3Nzg1YWYwMWE2 HTTP/1.1 Host: platform.myelefant.com User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://my.site.com/my-connect-page/ Connection: keep-alive
<a href="https://platform.myelefant.com/api/login?access_token={{ access_token }}">Connexion</a>
<a id="connectLink" href="https://platform.myelefant.com/api/login">Connexion</a> <script> // Get access token from your server var accessToken = 'ZWU5YjU2NWUtZjM4NS00OWYyLTg5YmMtZjA3Nzg1YWYwMWE2'; document.getElementById('connectLink').href += '?access_token=' + accessToken; </script>
La réponse est une redirection 302 vers la page listant les campagnes Sinch du compte.
HTTP/1.1 302 FOUND Content-Type: text/html; charset=utf-8 Content-Length: 269 Location: https://platform.myelefant.com/campaigns Set-Cookie: richsms-v2.cookie=0f49d737408384d7559f37d54f2ee6e2b810260f; Expires=Fri, 19-Aug-2016 13:37:38 GMT; Max-Age=86400; Path=/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="https://platform.myelefant.com/campaigns">https://platform.myelefant.com/campaigns</a>. If not click the link.
En cas d'erreur le statut HTTP est 401 et la réponse en texte contient le message d'erreur.
HTTP/1.1 401 UNAUTHORIZED Content-Type: text/plain; charset=utf-8 Content-Length: 20 Invalid access token
La création d'une campagne se fait par duplication d'une autre existante. Vous pouvez personaliser votre application sur l'interface de Sinch puis programmer de façon automatique l'envoi de campagnes similaires.
https://api.myelefant.com/v1/campaign/create
POST
application/x-www-form-urlencoded
ou application/json
(voir Préambule)[[URL]]
est remplacé par l'URL de l'application et [[X]]
est remplacé par la valeur de la colonne X (A à Z). Optionnel si logic est de type duplicate et que la campagne copiée a déjà un message correct. Dans ce cas, le message de la nouvelle campagne sera une copie du message de la campagne copiée. (Optionnel)[["0612345678", "Alice"], ["0612345679", "Bob"]]
yyyy-mm-dd HH:MM
contacts
, par défaut: A, B, C…
Les noms doivent contenir seulement des caractères alphanumerics, underscores, tirets ou espaces blancs.
Ces noms de champs seront retournés dans la route données d'un contact.
(Optionnel)
Soit la requête inclut tous les paramètres, soit elle n'inclut ni sender, ni message.
import requests import simplejson as json import datetime r = requests.post('https://api.myelefant.com/v1/campaign/create', { 'logic': 'duplicate', 'logic_param': '0cafc06b-13ba-4e1e-b03c-dd7b9a11b5e7', # UUID de la campagne à dupliquer 'name': 'Mon app', 'sender': 'Moi', 'message': 'Bonjour [[B]] ! Clique ici [[URL]]', 'contacts': json.dumps([['0612345678', 'Alice'], ['0612345679', 'Bob'], ['0634567812', 'Claire']]), 'send_date': datetime.datetime.now().strftime('%Y-%m-%d %H:%M'), }, headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
La valeur du paramètre logic_param
doit être l'identifiant (UUID) d'une de vos campagnes. Cet identifiant est affiché dans la liste de vos campagnes lorsque que vous cliquez sur "Afficher les IDs".
import requests import simplejson as json import datetime r = requests.post('https://api.myelefant.com/v1/campaign/create', json.dumps({ 'logic': 'duplicate', 'logic_param': '0cafc06b-13ba-4e1e-b03c-dd7b9a11b5e7', # UUID de la campagne à dupliquer 'name': 'Mon app', 'sender': 'Moi', 'message': 'Bonjour [[B]] ! Clique ici [[URL]]', 'contacts': [['0612345678', 'Alice'], ['0612345679', 'Bob'], ['0634567812', 'Claire']], 'send_date': datetime.datetime.now().strftime('%Y-%m-%d %H:%M'), }), headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8', 'Content-Type': b'application/json'})
La valeur du paramètre logic_param
doit être l'identifiant (UUID) d'une de vos campagnes. Cet identifiant est affiché dans la liste de vos campagnes lorsque que vous cliquez sur "Afficher les IDs".
200
application/json
{ "success": true, "solde": 430, "campaign": { "uuid": "5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f", "url": "https://rsms.co/bTD", "contact_count": 2, "duplicated_contacts": [], "wrong_contacts": [], "tag": null } }
400
application/json
{ "success": false, "errors": { "logic": ["Logic not found. Try with duplicate"], "name": ["This field is required."], "sender": ["Invalid input."], "message": ["This field is required."], "send_date": ["Not a valid datetime value"] } }
Chaque paramètre erroné apparaît dans l'objet errors
avec une liste de messages d'erreur.
Ce point d'entrée permet, sur une campagne existante, d'ajouter des contacts et d'envoyer un message à ces contacts.
campaign_uuid
.
https://api.myelefant.com/v1/campaign/sendsms
POST
application/x-www-form-urlencoded
ou application/json
(voir Préambule)["0612345678", "Alice"]
[["0612345678", "Alice"], ["0612345679", "Bob"]]
. La taille maximale de la liste est de 1000.import requests import simplejson as json import datetime r = requests.post('https://api.myelefant.com/v1/campaign/sendsms', { 'campaign_uuid': '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f', 'contacts': json.dumps([["0612345678", "Alice"], ["0612345679", "Bob"]]), }, headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
import requests import simplejson as json import datetime r = requests.post('https://api.myelefant.com/v1/campaign/sendsms', json.dumps({ 'campaign_uuid': '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f', 'contacts': [["0612345678", "Alice"], ["0612345679", "Bob"]], }), headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8', 'Content-Type': b'application/json'})
200
application/json
{ "success": true, "contacts": [ { "msisdn": "33612345678", "url": "https://rsms.co/bTD0", }, { "msisdn": "33612345679", "url": "https://rsms.co/bTD1", } ] }
400
application/json
{ "success": false, "errors": { "campaign_uuid": ["Campaign '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f' not found."], "contact": ["No JSON object could be decoded."], } }
Chaque paramètre erroné apparaît dans l'objet errors
avec une liste de messages d'erreur.
Fournit un résumé de toutes les campagnes envoyées par le compte. Cela permet de connaitre l'identifiant de la campagne, le nom de l'émetteur, le message envoyé, les dates d'envoi, etc.
https://api.myelefant.com/v1/campaigns
GET
yyyy-mm-dd HH:MM:SS
(Optionnel)
yyyy-mm-dd HH:MM:SS
(Optionnel)
['draft', 'scheduled', 'sending', 'sent']
(Optionnel)
['false', 'true']
(Optionnel) default: false
import requests r = requests.get('https://api.myelefant.com/v1/campaigns', headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
200
application/json
{ "success": true, "campaigns": [ { "status": "draft", "code": "HcE", "send_date": null, "name": "Modele pour API", "message": "Demo [[A]], voir [[URL]]", "contact_count": 4, "id": "c2d2f656-09f4-4e26-b9f3-92c14e15116d", "sender": "DemoEmett", "is_test": true, "tag": null, "connect_tag": null, "is_burst": false, "conversation": { "module": "module_name", "data": {} } }, { "status": "sent", "code": "mpD", "send_date": "2016-04-06 10:40:00", "name": "Campagne promo", "message": "Bonjour [[A]], opération déstockage à [[URL]]", "contact_count": 3500, "id": "e397637a-f9e2-4838-bcd0-2b87eef1311b", "sender": "Prom Emett", "is_test": false, "tag": "mycampaignid", "connect_tag": "mybaseid", "is_burst": false, "conversation": null }, { "status": "scheduled", "code": "bTD", "send_date": "2016-04-12 15:30:00", "name": "Mon app", "message": "Bonjour [[B]] ! Clique ici [[URL]]", "contact_count": 2, "id": "a7b28fd-a216-4d31-90b3-0f62c2e4ee7f", "sender": "Moi", "is_test": false, "tag": null, "connect_tag": null, "is_burst": true, "conversation": { "module": "module_name", "data": { "type": "order", "foo": "bar" } } } ], }
yyyy-mm-dd HH:MM:SS
.draft
(brouillon), scheduled
(prêt à l'envoi), sending
(en cours d'envoi) ou sent
(envoyé).Après l'envoi d'une campagne, les statistiques de celle-ci sont disponibles pendant 6 mois. Passé ce délai la liste des contacts sera vide Un résumé global nous informe du nombre de messages envoyés, reçus, stoppés, le nombre de clics général et unique, le nombre de prévisualisations et enfin le nombre de NPAI. Pour chaque contact on a la date d'envoi et de réception du message, le fait qu'il ait répondu STOP, le nombre et les dates de visites, son user agent et le fait que la prévisualisation du lien s'est affichée dans le message.
https://api.myelefant.com/v1/campaign/stats
GET
import requests r = requests.get('https://api.myelefant.com/v1/campaign/stats', params={ 'campaign_uuid': '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f' }, headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
200
application/json
{ "success": true, "summary": { "sms_submitted": 3, "sms_delivered": 2, "sms_stopped": 1, "clicks": 3, "unique_clicks": 2, "previews": 1, "npai": 1, "credits_used": 3, }, "contacts": [ { "msisdn": "33612345678", "url": "https://rsms.co/bTD0", "message": "Bonjour Alice ! Clique ici https://rsms.co/bTD0", "submitted": u"2014-12-16 13:00:00", "delivered": u"2014-12-16 13:30:00", "stopped": null, "visits": 2, "datetimes": "2014-12-16 14:00:00,2014-12-16 14:30:00", "preview": null, "user_agent": "Firefox OS", "npai": false, }, { "msisdn": "33612345679", "url": "https://rsms.co/bTD1", "message": "Bonjour Bob ! Clique ici https://rsms.co/bTD1", "submitted": "2014-12-16 13:01:00", "delivered": "2014-12-16 13:31:00", "stopped": true, "visits": 1, "datetimes": "2014-12-16 15:00:00", "preview": true, "user_agent": "Android", "npai": false, }, { "msisdn": "33634567812", "url": "https://rsms.co/bTD2", "message": "Bonjour Claire ! Clique ici https://rsms.co/bTD2", "submitted": "2014-12-16 13:02:00", "delivered": null, "stopped": null, "visits": 0, "datetimes": null, "preview": null, "user_agent": null, "npai": true, }, ], } }
columns
columns=1&columns=3
200
application/json
{ "success": true, "summary": { "sms_submitted": 3, "sms_delivered": 2, "sms_stopped": 1, "clicks": 3, "unique_clicks": 2, "previews": 1, "npai": 1, "credits_used": 3, }, "contacts": [ { "msisdn": "33612345678", "url": "https://rsms.co/bTD0", "message": "Bonjour Alice ! Clique ici https://rsms.co/bTD0", "submitted": u"2014-12-16 13:00:00", "delivered": u"2014-12-16 13:30:00", "stopped": null, "visits": 2, "datetimes": "2014-12-16 14:00:00,2014-12-16 14:30:00", "preview": null, "user_agent": "Firefox OS", "npai": false, "columns": ["CLIENT1234", "Alice"] }, { "msisdn": "33612345679", "url": "https://rsms.co/bTD1", "message": "Bonjour Bob ! Clique ici https://rsms.co/bTD1", "submitted": "2014-12-16 13:01:00", "delivered": "2014-12-16 13:31:00", "stopped": true, "visits": 1, "datetimes": "2014-12-16 15:00:00", "preview": true, "user_agent": "Android", "npai": false, "columns": ["CLIENT5678", "Bob"] }, { "msisdn": "33634567812", "url": "https://rsms.co/bTD2", "message": "Bonjour Claire ! Clique ici https://rsms.co/bTD2", "submitted": "2014-12-16 13:02:00", "delivered": null, "stopped": null, "visits": 0, "datetimes": null, "preview": null, "user_agent": null, "npai": true, "columns": ["CLIENT9123", "Mark"] }, ], } }
filters
filters=msisdn&filters=message
200
application/json
{ "success": true, "summary": { "sms_submitted": 3, "sms_delivered": 2, "sms_stopped": 1, "clicks": 3, "unique_clicks": 2, "previews": 1, "npai": 1, "credits_used": 3, }, "contacts": [ { "msisdn": "33612345678", "message": "Bonjour Alice ! Clique ici https://rsms.co/bTD0" }, { "msisdn": "33612345679", "message": "Bonjour Bob ! Clique ici https://rsms.co/bTD1" }, { "msisdn": "33634567812", "message": "Bonjour Claire ! Clique ici https://rsms.co/bTD2" }, ], } }
Toutes les dates de la réponse sont au format yyyy-mm-dd HH:MM:SS
.
400
application/json
{ "success": false, "errors": { "campaign_uuid": "La campagne n'existe pas ou n'est pas associée à ce compte." } }
Ce point d'entrée permet, sur une campagne existante, d'obtenir la liste des événements de la campagne entre deux dates données.
https://api.myelefant.com/v1/campaign/log
GET
yyyy-mm-dd HH:MM:SS
yyyy-mm-dd HH:MM:SS
types=SUBMIT&types=DELIVER
.
Voir la liste des types.
(Optionnel)
import requests r = requests.get('https://api.myelefant.com/v1/campaign/log', params={ 'campaign_uuid': '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f', 'start': '2015-07-06 17:30:00', 'stop': '2015-07-06 19:00:00' }, headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
200
application/json
{ "success": true, "log": [ { "datetime" : "2015-07-06 17:30:00", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "SUBMIT", "data": {"datetime" : "2015-07-06 17:29:54", "success": true, "message": "Bonjour Alice ! Clique ici https://rsms.co/bTD0", "nb_parts": 1} }, { "datetime" : "2015-07-06 17:30:01", "contact": {"push_id": "clientid", "channel": "push"}, "type": "SUBMIT", "data": {"datetime" : "2015-07-06 17:30:00", "success": true, "message": "Bonjour Alice !", "nb_parts": 1} }, { "datetime" : "2015-07-06 17:30:02", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "DELIVER", "data": {"datetime" : "2015-07-06 17:30:01", "success": true, "code": "2", "reason": "Delivered", "nb_parts": 1} }, { "datetime" : "2015-07-06 17:31:42", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "RESPONSE", "data": {"datetime" : "2015-07-06 17:31:40", "message": "STOP svp", "stop": true} }, { "datetime" : "2015-07-06 17:31:00" "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "VISIT", "data": { "datetime" : "2015-07-06 16:55:22", "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405", "device": {"family": "iPhone"}, "os": {"family": "iOS", "version", "5.0.1"}, "browser": {"family": "Mobile Safari", "version": "5.0.1"} } }, { "datetime" : "2015-07-06 17:31:00" "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "OG_PREVIEW", "data": { "datetime" : "2015-07-06 16:55:22", "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405", } }, { "datetime": "2015-07-06 17:59:19", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "TRACKER", "data": { "datetime": "2015-07-06 17:58:32", "name": "button_662a", "value": "click" } }, { "datetime": "2015-07-06 17:35:24", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms"}, "type": "FORM", "data": { "datetime": "2015-07-06 17:31:28", "name": "newsletter_inscriptions", "form": { "email": "customer@example.com" } } } ] }
start
, stop
and columns
start=2015-07-06%2017%3A29%3A40&stop=2015-07-06%2017%3A30%3A20&columns=1&columns=3
200
application/json
{ "success": true, "log":[ { "datetime" : "2015-07-06 17:30:00", "contact": {"msisdn": "33612345678", "code": "0", "channel": "sms", "columns": ["CLIENT1234", "Alice"]}, "type": "SUBMIT", "data": {"datetime" : "2015-07-06 17:29:54", "success": true, "message": "Bonjour Alice ! Clique ici https://rsms.co/bTD0", "nb_parts": 1} }, ] }
400
application/json
{ "success": false, "errors": { "campaign_uuid": ["Campaign '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f' not found."], "start": ["this field is required"] "stop": ["this field is required"] } }
Chaque paramètre erroné apparaît dans l'objet errors
avec une liste de messages d'erreur.
Les types d'événements sont les suivants :
Un événement possède toujours ces quatre attributs :
yyyy-mm-dd HH:MM:SS
Description des données de l'événement par type (le contenu du champ data
) :
yyyy-mm-dd HH:MM:SS
true
si nous avons réussi à envoyer le message, sinon false
yyyy-mm-dd HH:MM:SS
true
si le destinataire a reçu le message, sinon falseyyyy-mm-dd HH:MM:SS
true
si le mot "stop" est dans le message, sinon false
yyyy-mm-dd HH:MM:SS
yyyy-mm-dd HH:MM:SS
yyyy-mm-dd HH:MM:SS
null
si non utilisé).yyyy-mm-dd HH:MM:SS
Ce point d'entrée, pour le moment interne seulement, permet d'obtenir un contact d'une campagne. L'identifiant du contact est nécessaire. La réponse contient les noms de champs du contact fournis par la route de création de campagne. Les Connecteurs SFTP peuvent utiliser l'en-tête CSV comme noms de champs. Le contact est disponible pendant 6 mois après l'envoi de la campagne. Passé ce délai le contact ne sera pas trouvé.
https://api.myelefant.com/v1/campaign/contacts/{contact_id}
GET
curl https://api.myelefant.com/v1/campaign/contacts/018d55fe-dd08-4cb4-bece-e4efa5f0be01_0 \ -H "Authorization: Bearer $ACCESS_TOKEN"
200
application/json
{ "success": true, "fields": [ {"name": "phone", "value": "33612345678"}, {"name": "firstname", "value": "Alice"} ] }
Ce point d'entrée permet, sur une campagne existante, d'obtenir la liste des contacts de la campagne. Les contacts sont disponibles pendant 6 mois après la création de la campagne. Passé ce délai la liste des contacts sera vide.
https://api.myelefant.com/v1/campaign/contacts
GET
import requests r = requests.get('https://api.myelefant.com/v1/campaign/contacts', { 'campaign_uuid': '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f', }, headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
200
application/json
{ "success": true, "contacts": [ ["0612345678", "Alice"], ["0612345679", "Bob"], ["0634567812", "Claire"] ] }
400
application/json
{ "success": false, "errors": { "campaign_uuid": ["Campaign '5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f' not found."], } }
Chaque paramètre erroné apparaît dans l'objet errors
avec une liste de messages d'erreur.
Retourne les informations d'une campagne. Cela permet de connaitre l'identifiant de la campagne, le nom de l'émetteur, le message envoyé, les dates d'envoi, etc.
https://api.myelefant.com/v1/campaigns/{id}
GET
import requests r = requests.get('https://api.myelefant.com/v1/campaigns/5a7b28fd-a216-4d31-90b3-0f62c2e4ee7f', headers={'Authorization': 'Bearer be3e1c6d-e6bc-46aa-8868-d9e24b051ed8'})
200
application/json
{ "success": true, "campaign": { "status": "draft", "code": "HcE", "send_date": null, "name": "Modele pour API", "message": "Demo [[A]], voir [[URL]]", "contact_count": 4, "id": "c2d2f656-09f4-4e26-b9f3-92c14e15116d", "sender": "DemoEmett", "is_test": true, "tag": null, "connect_tag": null, "conversation": { "module": "module_name", "data": {} }, "format": "rich", "validation_errors" : { "contacts": [], "message": ["Missing sender"], "app": ["App is empty"], "global": ["Not enough credits"] } }, }
yyyy-mm-dd HH:MM:SS
.draft
(brouillon), scheduled
(prêt à l'envoi), sending
(en cours d'envoi) ou sent
(envoyé).simple
or rich
Afin de ne pas surcharger l'API, nous recommandons d'effectuer des appels sequentiels sur les différents endpoints et d'éviter les appels en parallèle sur le même compte.
Pour plus d'information, merci de nous contacter: campaign_manager_api@sinch.com