Contact Everyone
Cette page documente l'API REST de la solution de messaging Contact Everyone.
Contact Everyone est une offre d'Orange Business :
https://www.orange-business.com/fr/solutions/relation-client/contact-everyone
Contact Everyone, ainsi que l'accès à l'API REST, sont soumis à abonnement. Vous pouvez vous rapprocher de votre contact commercial Orange Business pour plus de renseignements.
Informations importantes
Cette documentation n'est pas contractuelle, est fournie en l'état, et ne saurait engager la responsabilité d'Orange Business Services en aucun cas.
Contact Everyone évoluant constamment, l'utilisateur de cette documentation doit s'assurer qu'il utilise la version disponible en ligne sur le site officiel à l'adresse https://contact-everyone.orange-business.com/api/docs/guides/index.html et non une version enregistrée ou conservée dans un cache.
Des corrections et ajustements étant apportés régulièrement à l'API et à la documentation, il peut arriver que l'implémentation diffère légèrement.
Cette documentation pouvant être rendue obsolète sans préavis d'aucune sorte, Orange Business Services ne saurait être tenu responsable d'un travail basé sur une version obsolète de la documentation.
Changements depuis la v1.1
Support des diffusions fax et vocales
Ajout de la configuration des catégories de diffusion
Ajout de l'affectation d'une catégorie de diffusion à une diffusion
Ajout de la création/modification/suppression de groupes
Ajout de la création/modification/suppression d'utilisateurs (superviseur et diffuseur)
Ajout d'un critère de recherche par identifiant de diffusion dans la recherche des réponses SMS
Les réponses SMS contiennent maintenant la liste des identifiants de diffusions associés
Refonte des messages d'erreurs : plus complets et explicites
Suppression de l'ajout/suppression de contact unique à des listes de diffusions. Utiliser l'ajout/suppression de multiples contacts à la place.
Ajout de la configuration de modèle de diffusion
Ajout de la configuration de message prédéfini
Ajout de l'utilisation de modèle de diffusion et/ou de message prédéfini dans les diffusions.
0. Prise en main
La solution complète pour vos diffusions
La plateforme Contact-Everyone est un service d'envoi de messages en masse proposé par Orange.
Ce service s'adresse aux professionnels et vous offre les moyens de réaliser vos campagnes SMS, e-mail, vocal et/ou fax en quelques clics via son application en ligne et consulter les statistiques de remise et les réponses de vos clients.
Par ailleurs, la plateforme Contact-Everyone propose
- Une API complète pour mettre en place efficacement vos campagnes et délivrer rapidement vos messages via les canaux SMS, e-mail, voix et fax.
- Une architecture rapide, scalable et entièrement sécurisée vous garantissant une fiabilité de réception exceptionnelle
- Un suivi avancé des messages pour analyser et mesurer l'efficacité de votre campagne
L'API pouvant être enrichie après publication, il est indispensable que le client API ne réalise pas de parsing strict des réponses fournies par CEO : le client API devra ignorer les données non nécessaires à son fonctionnement.
Protocole de connexion sécurisée
Vos applicatifs doivent se connecter en HTTPS en utilisant le protocole TLS 1.3.
Le protocole TLS 1.2 est également supporté, mais nous vous recommandons TLS 1.3.
Vous ne pouvez pas utiliser les protocoles TLS 1.0 et TLS 1.1.
Les protocoles et ciphers supportés sont susceptibles d'évoluer en fonction des recommandations et politiques de sécurité, des risques liés à la sécurité de la plateforme, à celle des applicatifs et à la protection des données, des failles découvertes, et/ou de toute autre cas non listé qui le justifierait.
Vous devez donc être en mesure de pouvoir ajuster vos applicatifs sous un délai raisonnable lorsqu'une situation de ce type se présente.
Authentification
L'API de Contact-Everyone V5 est entièrement sécurisée par protocole OAuth2. Ce protocole standardisé permet à des applications tierces d’obtenir un accès sécurisé à un service via HTTPS par le biais d’une autorisation préalable accordée au client.
L'accès aux ressources de l'API s'effectue en deux étapes :
1. L'utilisateur s'authentifie à l'aide de son nom d'utilisateur et de son mot de passe au format application/x-www-form-urlencoded. Une fois authentifié, un jeton d'accés appelé [Access-Token]
est retourné au client.
Pour récupérer un jeton d'accès, effectuez une requête POST HTTP vers l'URL ci-dessous.
Ne pas oublier de faire un urlEncode sur le login et le mot de passe.
2. L'utilisateur interroge le service en ajoutant son jeton d'accès dans l'entête Authorization
de chacune de ses requêtes HTTP
A SAVOIR
- Afin d'utiliser le service, le mot de passe du compte utilisateur doit avoir été personnalisé sur l'application en ligne
- Le jeton d'accès est émis avec une durée de validité initiale de une heure, prolongée d'autant à chaque utilisation. Le jeton expire après une heure d'inactivité, et devra être renouvelé (via la même requête d'authentification).
- Demander un jeton n'invalide pas les jetons encore valides : les applicatifs distribués peuvent demander chacun leur jeton.
- Toutes les requêtes sur l'API REST doivent être exécutées en HTTPS.
⚠ Le jeton d'accès doit être mis en cache côté applicatif.
L'utilisation répétée de l'API de génération de token a pour conséquence l'activation d'un rate limiting.
De manière générale, la plateforme étant mutualisée, un comportement abusif de la part de l'application client pourra faire l'objet de mesures dissuasives.
Format de requête
Format de requête
curl -X POST 'https://[SERVER_URL]/api/v1.2/oauth/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: application/json' \
-d 'username=[login]&password=[password]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/oauth/token");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setDoOutput(true);
String postJsonData = "username=[login]&password=[password]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/oauth/token", Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded",
"username=[login]&password=[password]",
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/oauth/token", Method.POST)
request.AddHeader("Content-Type", "application/x-www-form-urlencoded")
request.AddParameter("application/x-www-form-urlencoded",
"username=[login]&password=[password]",
ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/oauth/token";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'
));
$content='username=[login]&password=[password]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/oauth/token"
payload := strings.NewReader("username=[login]&password=[password]")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Champ | Type | Description |
---|---|---|
username | String | L'identifiant utilisé pour se connecter à l'application |
password | String | Le mot de passe utilisé pour se connecter à l'application |
Note : L'identifiant et le mot de passe doivent être fournis au format application/x-www-form-urlencoded
Format de réponse
Format de réponse
{ "access_token":"[access_token]", "token_type":"Bearer", "scope":"api", "ttl":3600 }
- Status code : 200 Ok
- Response Body : Renvoie un objet au format JSON contenant, entre autre, l'[Access-Token]
Champ | Type | Description |
---|---|---|
access_token | String | Le jeton d'accès |
token_type | String | Le type de jeton OAuth2.0, toujours "Bearer" |
scope | String | Le type de jeton, toujours "api" |
ttl | String | La durée de vie du jeton, en secondes |
Erreurs possibles
Status HTTP | Description |
---|---|
401 Unauthorized | Vérifier que l'utilisateur et le mot de passe fournis sont corrects et que les paramètres ont été fournis au format x-www-form-urlencoded |
404 NotFound | Assurez vous que le chemin HTTP fourni est bien le suivant : /api/v1.2/oauth/token |
Déconnexion
Format de requête
curl -X GET 'https://[SERVER_URL]/api/v1.2/logout' \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/logout");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2/logout");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2/logout")
dim request as RestRequest = new RestRequest(Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/logout";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/logout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
res.Body.Close()
}
Un utilisateur peut révoquer son accès en demandant à l'application d'invalider son token d'accès.
Pour invalider un jeton d'accès, effectuez une requête GET HTTP vers l'URL ci-dessous.
Note : L'entête Authorization: Bearer doit être positionnée.
Quick Start Guide
Dans ce quick start guide, nous allons découvrir les étapes simples permettant de déclencher un envoi de message SMS vers plusieurs destinataires identifiés par leurs numéros de mobile.
1. Récupérer un groupe de travail
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
dim request as RestRequest = new RestRequest("/groups", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Dans l'application Contact-Everyone V5 tout est organisé par groupe. L'utilisation des groupes permet, entre autre, de grouper ses contacts et ses listes de diffusion afin de les partager avec d'autres utilisateurs.
Pour commencer, il convient donc de récupérer un identifiant de groupe.
Pour faire cela, utilisez l'URL suivante permettant de lister vos groupes.
Puis récupérez l'identifiant du groupe sur lequel vous allez effectuer votre envoi de messages.
Pour plus de détails sur la gestion des groupes, rendez-vous dans la section Gérer ses groupes
2. Créer une diffusion SMS simple
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id-group]/diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '{
"msisdns":["+33693847755", "0764536453", "+447564110766"],
"smsParam":{
"encoding" : "GSM7",
"body":"Bonjour les amis, rendez vous au plan B à 18h00"
}
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id-group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"+
"\"msisdns\":[\"+33693847755\",\"0764536453\",\"+447564110766\"],"+
"\"smsParam\":{\"encoding\":\"GSM7\", \"body\":\"mon contenu SMS\"}}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""msisdns"":[""+33693847755"",""0764536453"",""+447564110766""],
""smsParam"":{
""encoding"":""GSM7"",
""body"":""mon contenu SMS""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""msisdns"":[""+33693847755"",""0764536453"",""+447564110766""],
""smsParam"":{
""encoding"":""GSM7"",
""body"": ""mon contenu SMS""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"msisdns":["+33693847755","0764536453","+447564110766"],
"smsParam":{
"encoding":"GSM7",
"body": "mon contenu SMS"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"msisdns":"+33693847755","0764536453","+447564110766",
"smsParam":{
"encoding": "GSM7",
"body": "mon contenu SMS"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("accept", "application/json")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Considérons l'envoi d'un message SMS vers trois numéros de mobile.
Construisez un document JSON conforme à la structure d'une diffusion, comme celui présenté sur la droite.
Le déclenchement d'une diffusion s'effectuera à l'aide d'une requête HTTP POST vers l'URL ci-dessous.
:id-group
/diffusion-requests
Vous pouvez vous inspirer de l'exemple cURL dans le bandeau de droite.
3. Consulter l'état de votre diffusion
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/diffusions/[id-diffusion]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]"
Une fois la demande de diffusion créée, récupérez son identifiant (attribut id
du document retourné).
Vous pouvez ensuite suivre son avancement à l'aide d'une requête HTTP GET vers l'URL ci-dessous.
:id-diffusion
Une fois de plus, vous pouvez vous inspirer vous de l'exemple cURL dans le bandeau de droite.
Le document retourné contient de nombreux champs renseignant sur l'état d'avancement de votre diffusion, le nombre de destinataires en succès et en échec, le ratio de succès, etc.
Pour des informations détaillées, rendez-vous dans la section état d'une diffusion
Informations générales
- Version de l'API
La version actuelle de l'API est 1.2
Format et entêtes HTTP
- Toutes les dates sont retournées au format ISO8601 suivant :
yyyy-MM-ddTHH:mm:ss.SSSXXX
. Ex : 2017-11-02T11:28:23.000+02:00 - Toutes les requêtes émises vers l'API doivent contenir les entêtes HTTP obligatoires :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Spécifie le format de données |
Authorization | Bearer [Access-Token] |
Permet de vous authentifier sur l'api. |
- Pagination des résultats
Certaines ressources retournent des listes pouvant contenir de très nombreux éléments (ex : Consultation des contacts ou des réponses). Ces résultats sont paginés, c'est à dire, englobé dans un document JSON de plus haut-niveau contenant des informations sur la structure paginée.
Ce document contient les propriétés ci-dessous.
Attribut | Description |
---|---|
content | Tableau des résultats |
size | Nombre d'éléments sur la page courante min : 5, max : 100 |
totalElements | Nombre total d'éléments |
number | Numéro de page courante (débute à 1) |
totalPages | Nombre total de pages |
first | Vrai si première page, faux sinon |
last | Vrai si dernière page, faux sinon |
Vous pouvez utiliser les paramètres pageNumber et pageSize en query params dans vos requêtes HTTP.
Par exemple, la requête suivante vous retournera la deuxième page d'une liste qui contient 8 éléments par page
:id-group
/replies?pageNumber=2&pageSize=8
Déroulement des résultats
Certaines ressources retournent des listes pouvant contenir de très nombreux éléments. Ces résultats peuvent être consultés de manière déroulante, ils sont englobés dans un document JSON de plus haut-niveau contenant des informations sur la structure déroulante.
Ce document contient les propriétés ci-dessous.
Attribut | Description |
---|---|
content | Tableau des résultats |
scrollId | Identifiant à passer en paramètre de la requête suivante pour récupérer la suite des résultats. Cet identifiant peut être très long (>300 octets). |
- Codes d'erreur
Si une opération est en échec (ie code HTTP différent de 2XX), les codes d'erreur détaillés retournés par notre serveur sont définis ci-dessous.
Code Erreur | Code HTTP | Description |
---|---|---|
N/A | 5XX | Erreur serveur, retentez à nouveau |
N/A | 404 NotFound | La ressource pointée n'existe pas ou plus |
UnparsableRequest | 400 BadRequest | Le format de la requête est incorrect, vérifiez la structure de votre document JSON |
NotEmpty | 400 BadRequest | Le champ identifié par field ne peut être vide |
400 BadRequest | Le format d'email du champ identifié par field est incorrect |
|
Msisdn | 400 BadRequest | Le format de numéro de mobile identifié par field est incorrect |
NameNotAvailable | 400 BadRequest | Le nom utilisé n'est pas disponible |
- Exemples de code
Si vous voulez utiliser les exemples de code C# (.NET) de cette documentation il vous faudra installer une bibliothèque tierce.
En effet nous avons utilisé la librairie RestSharp pour simplifier la consommation du service web REST et HTTP pour .Net.
Vous trouverez plus d'infos sur le site : RestSharp - Simple REST and HTTP API Client for .NET
Pour pouvoir installer les packages nécessaires pour le fonctionnement de l'API
PM> Install-Package RestSharp -Version 105.2.3
- Nombre de caractères des SMS et SMS longs
En fonction de votre compte et du jeu de caractères utilisé (UNICODE ou GSM7), le nombre de caractères maximum autorisé dans un SMS varie :
type d'usage | option Personnalisation Numéro Émetteur | jeu de caractères | Sans option SMS Longs | Avec option SMS Longs |
---|---|---|---|---|
Marketing | oui | GSM | 145 | 1515 |
Marketing | oui | UNICODE | 55 | 655 |
Marketing | non | GSM | 160 | 1530 |
Marketing | non | GSM | 70 | 670 |
Professionnel | oui | GSM | 160 | 1530 |
Professionnel | oui | UNICODE | 70 | 670 |
Professionnel | non | GSM | 160 | 1530 |
Professionnel | non | UNICODE | 70 | 670 |
Interpersonnel | oui | GSM | interdit | interdit |
Interpersonnel | oui | UNICODE | interdit | interdit |
Interpersonnel | non | GSM | 160 | 1530 |
Interpersonnel | non | UNICODE | 70 | 670 |
Si vous disposez de l'option SMS Longs, vos messages de plus de 160 caractères en GSM, ou de plus de 70 caractères en UNICODE, seront découpés et facturés en plusieurs SMS, selon les règles décrites dans les tableaux ci-dessous.
Usage Marketing :
jeu de caractère | perso du numéro émetteur | nombre de caractères | nombre de SMS facturés |
---|---|---|---|
GSM | sans | de 1 à 160 inclus | 1 |
GSM | sans | de 161 à 306 inclus | 2 |
GSM | sans | de 307 à 459 inclus | 3 |
GSM | sans | de 460 à 612 inclus | 4 |
GSM | sans | de 613 à 765 inclus | 5 |
GSM | sans | de 766 à 918 inclus | 6 |
GSM | sans | de 919 à 1071 inclus | 7 |
GSM | sans | de 1072 à 1224 inclus | 8 |
GSM | sans | de 1225 à 1377 inclus | 9 |
GSM | sans | de 1378 à 1530 inclus | 10 |
UNICODE | sans | de 1 à 70 inclus | 1 |
UNICODE | sans | de 71 à 134 inclus | 2 |
UNICODE | sans | de 135 à 201 inclus | 3 |
UNICODE | sans | de 202 à 268 inclus | 4 |
UNICODE | sans | de 269 à 335 inclus | 5 |
UNICODE | sans | de 336 à 402 inclus | 6 |
UNICODE | sans | de 403 à 469 inclus | 7 |
UNICODE | sans | de 470 à 536 inclus | 8 |
UNICODE | sans | de 537 à 603 inclus | 9 |
UNICODE | sans | de 604 à 670 inclus | 10 |
GSM | avec | de 1 à 145 inclus | 1 |
GSM | avec | de 146 à 291 inclus | 2 |
GSM | avec | de 292 à 444 inclus | 3 |
GSM | avec | de 445 à 597 inclus | 4 |
GSM | avec | de 598 à 750 inclus | 5 |
GSM | avec | de 751 à 903 inclus | 6 |
GSM | avec | de 904 à 1056 inclus | 7 |
GSM | avec | de 1057 à 1209 inclus | 8 |
GSM | avec | de 1210 à 1362 inclus | 9 |
GSM | avec | de 1363 à 1515 inclus | 10 |
UNICODE | avec | de 1 à 55 inclus | 1 |
UNICODE | avec | de 56 à 119 inclus | 2 |
UNICODE | avec | de 120 à 186 inclus | 3 |
UNICODE | avec | de 187 à 253 inclus | 4 |
UNICODE | avec | de 254 à 320 inclus | 5 |
UNICODE | avec | de 321 à 387 inclus | 6 |
UNICODE | avec | de 388 à 454 inclus | 7 |
UNICODE | avec | de 455 à 521 inclus | 8 |
UNICODE | avec | de 522 à 588 inclus | 9 |
UNICODE | avec | de 589 à 655 inclus | 10 |
Autres usages :
jeu de caractère | perso du numéro émetteur | nombre de caractères | nombre de SMS facturés |
---|---|---|---|
GSM | avec ou sans | de 1 à 160 inclus | 1 |
GSM | avec ou sans | de 161 à 306 inclus | 2 |
GSM | avec ou sans | de 307 à 459 inclus | 3 |
GSM | avec ou sans | de 460 à 612 inclus | 4 |
GSM | avec ou sans | de 613 à 765 inclus | 5 |
GSM | avec ou sans | de 766 à 918 inclus | 6 |
GSM | avec ou sans | de 919 à 1071 inclus | 7 |
GSM | avec ou sans | de 1072 à 1224 inclus | 8 |
GSM | avec ou sans | de 1225 à 1377 inclus | 9 |
GSM | avec ou sans | de 1378 à 1530 inclus | 10 |
UNICODE | avec ou sans | de 1 à 70 inclus | 1 |
UNICODE | avec ou sans | de 71 à 134 inclus | 2 |
UNICODE | avec ou sans | de 135 à 201 inclus | 3 |
UNICODE | avec ou sans | de 202 à 268 inclus | 4 |
UNICODE | avec ou sans | de 269 à 335 inclus | 5 |
UNICODE | avec ou sans | de 336 à 402 inclus | 6 |
UNICODE | avec ou sans | de 403 à 469 inclus | 7 |
UNICODE | avec ou sans | de 470 à 536 inclus | 8 |
UNICODE | avec ou sans | de 537 à 603 inclus | 9 |
UNICODE | avec ou sans | de 604 à 670 inclus | 10 |
Ces informations ne sont pas contractuelles.
Media
Les valeurs possibles sont : SMS
, EMAIL
, FAX
, VOICE
.
DTMF
Les valeurs possibles sont : 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, *
, #
.
EmissionChannel
Les valeurs possibles sont:
WEB
, EMAIL
, API_LIGHT
, API
, SMPP
AudioContent
L'un des deux paramètres doit être renseigné
Parameter | Type | Description |
---|---|---|
text | String | Le contenu vocalisé |
contentId | String | L'identifiant d'un contenu audio préalablement téléversé |
SmsParam
Champ | Type | Requis | Description |
---|---|---|---|
senderName | String | false | Le nom de l'émetteur |
encoding | String | true | Le charset utilisé pour l'envoi (GSM7 ou UCS2 ) |
body | String | true | Le corps du message (format texte) |
templateId | String | false | Identifiant du message prédéfini à appliquer dans le cas des modèles de diffusion et des diffusions ce champ est utilisé en entrée, mais n'est jamais retourné |
urlToShorten | String | false | L'URL à raccourcir (cf Créer une diffusion SMS) |
landingPageParam | LandingPageParam | false | Les paramètres pour la génération d'une landing page (cf Créer une diffusion SMS) |
LandingPageParam
Champ | Type | Requis | Description |
---|---|---|---|
landingPageId | String | true | L'identifiant du template Sinch for marketing à utiliser pour générer la landing page |
fields | Map{String,String} | false | Un ensemble de clé :valeur où clé est un caractère entre B et Z et valeur est un champ publipostage (cf Structure d'une diffusion). Lors de l'envoi, valeur sera remplacé par une valeur correspondante au destinataire et la map sera transmise à Sinch for marketing pour remplacer les variables utilisées dans le template de la landing page. |
EmailParam
Champ | Type | Requis | Description |
---|---|---|---|
senderName | String | false | Le nom de l'émetteur |
senderEmail | String | true | L'adresse email de l'émetteur |
replyTo | String | false | L'adresse email de réponse |
subject | String | true | Le sujet du mail |
body | String | true | Le corps du mail (format html) |
attachmentIds | String[] | false | Identifiants des fichiers à attacher |
templateId | String | false | Identifiant du message prédéfini à appliquer dans le cas des modèles de diffusion et des diffusions ce champ est utilisé en entrée, mais n'est jamais retourné |
FaxParam
Champ | Type | Requis | Description |
---|---|---|---|
attachmentIds | String[] | false | Identifiants des documents fax |
headingHTML | String | false | La page de garde HTML du fax |
templateId | String | false | Identifiant du message prédéfini à appliquer dans le cas des modèles de diffusion et des diffusions ce champ est utilisé en entrée, mais n'est jamais retourné |
senderNumber | String | false | Numéro de fax personnalisé apparaît comme le numéro de l'émetteur, doit faire parti de la liste de numéros associés à votre compte |
VoiceParam
Les contenus audio doivent soit être renseignés via les paramètres ci-dessous, soit être fournis au moyen d'une requête de type multipart/form-data
Parameter | Type | Requis | Description |
---|---|---|---|
intro | AudioContent | false | Le contenu de l'introduction du message (max 2000 car). |
body | AudioContent | true | Le contenu du message (max 2000 car). |
outro | AudioContent | false | Le contenu de la conclusion du message (max 2000 car). |
locale | String | true | La locale utilisée pour la synthèse vocale: fr_FR (France) ou en_GB (Royaume Uni) |
templateId | String | false | Identifiant du message prédéfini à appliquer dans le cas des modèles de diffusion et des diffusions ce champ est utilisé en entrée, mais n'est jamais retourné |
senderNumber | String | false | Numéro de fixe personnalisé apparaît comme le numéro de l'émetteur, doit faire parti de la liste de numéros associés à votre compte |
1. Gérer ses groupes
Un groupe est une notion permettant de regrouper des utilisateurs (de type diffuseurs ou superviseurs).
Le groupe est le moyen priviligié pour partager des contacts d'annuaire et des listes de diffusion entre utilisateurs. Il peut être également utilisé pour définir des contextes de travail.
Structure d'un groupe
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique du groupe. |
name | String | true | Le nom du groupe. |
createdAt | Date | true | Date de création du groupe. |
updatedAt | Date | true | Date de dernière modification du groupe. |
- Lister les groupes
Ce point d'accès permet de récupérer tous les groupes auxquel appartient l'utilisateur courant.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
N/A
- Payload
N/A
Format de réponse
Format de réponse
[ { "id":"f12edd46-96b8-41d9-baa7-58f42daa9301", "name":"Groupe interne", "createdAt": "2017-04-10T11:57:43.229+01:00", "updatedAt": "2017-04-10T11:57:44.030+01:00" }, { "id":"e32edd46-96b8-41d9-baa7-58f42daa9374", "name":"Groupe diffusion Noel", "createdAt": "2017-04-10T11:57:43229+01:00", "updatedAt": "2017-04-10T11:57:44030+01:00" } ]
- Status code : 200 OK
- Response Body : Retourne une liste d'objets groupe
- Récupérer un groupe
:id-group
Ce point d'accès permet de récupérer un groupe à partir de son identifiant .
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id":"0e82774b-4cae-4347-80fe-10e81ce4a9da", "name":"Julien", "createdAt": "2017-04-10T11:57:43.229+01:00", "updatedAt": "2017-04-10T11:57:44.030+01:00" }
- Status code : 200 Ok
- Response Body : Renvoie un objet groupe
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du groupe auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Créer un groupe
Ce point d'accès permet de créer un groupe.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"Mon groupe",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{" +
"\"name\":\"Mon groupe\"," +
"\"ownerId\":\"729492ac-a214-4874-95fc-e0609a5ac9b6\"" +
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"{
""name"":""Mon groupe"",
""ownerId"":""729492ac-a214-4874-95fc-e0609a5ac9b6""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""Mon groupe"",
""ownerId"":""729492ac-a214-4874-95fc-e0609a5ac9b6""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/groups";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"Mon groupe",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups"
json := `{
"name":"Mon groupe",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
Parameter | Type | Requis | Description |
---|---|---|---|
name |
String | true | Nom du groupe |
ownerId |
String | false | Identifiant de l'utilisateur propriétaire du groupe, si différent de l'utilisateur courant |
Format de réponse
Format de réponse
{ "id":"007f2a20-1790-410f-8d54-7eafad4cb856", "name":"Mon groupe", "ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6", "createdAt": "2018-03-02T10:18:55.371+01:00", "updatedAt": "2018-03-02T10:18:55.371+01:00" }
- Status code : 201 Created
- Response Body : Renvoie un objet groupe
Erreurs possibles
Status HTTP | Code | Detail | Description |
---|---|---|---|
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur que vous souhaitez associer |
400 BadRequest | ReferenceNotFound | ownerId | L'identifiant de l'utilisateur renseigné comme owner n'existe pas |
400 BadRequest | NameNotAvailable | groupname | Le nom de groupe n'est pas disponible |
- Modifier un groupe
:id-group
Ce point d'accès permet de modifier un groupe.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"Nouveau nom",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{" +
"\"name\":\"Nouveau nom\"," +
"\"ownerId\":\"729492ac-a214-4874-95fc-e0609a5ac9b6\"" +
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"{
""name"":""Nouveau nom"",
""ownerId"":""729492ac-a214-4874-95fc-e0609a5ac9b6""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""Nouveau nom"",
""ownerId"":""729492ac-a214-4874-95fc-e0609a5ac9b6""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"Nouveau nom",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]"
json := `{
"name":"Nouveau nom",
"ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group |
String | Identifiant du groupe à modifier |
- Payload
Parameter | Type | Description |
---|---|---|
name |
String | Nom du groupe |
ownerId |
String | Identifiant de l'utilisateur propriétaire du groupe |
Format de réponse
Format de réponse
{ "id":"007f2a20-1790-410f-8d54-7eafad4cb856", "name":"Nouveau nom", "ownerId":"729492ac-a214-4874-95fc-e0609a5ac9b6", "createdAt": "2018-03-02T10:18:55.371+01:00", "updatedAt": "2018-03-02T10:18:55.371+01:00" }
- Status code : 200 Ok
- Response Body : Renvoie un objet groupe
Erreurs possibles
Status HTTP | Code | Detail | Description |
---|---|---|---|
400 BadRequest | ReferenceNotFound | ownerId | L'identifiant de l'utilisateur renseigné comme owner n'existe pas |
400 BadRequest | NameNotAvailable | groupname | Le nom de groupe n'est pas disponible |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou sur l'utilisateur que vous souhaitez associer |
- Supprimer un groupe
:id-group
Ce point d'accès permet de supprimer un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json")
IRestResponse response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request = new RestRequest("/groups/[id_group]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe à supprimer |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | Le groupe auquel vous tentez d'accéder n'existe pas |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe que vous souhaitez supprimer |
400 BadRequest | CannotRemoveUserFromDefaultGroup | Opération impossible : C'est le groupe par défaut d'un utilisateur |
400 BadRequest | CannotRemoveUserFromHisLastGroup | Opération impossible : C'est le dernier groupe d'un utilisateur |
400 BadRequest | GroupUsedInScheduledDiffusion | Opération impossible : Ce groupe est utilisé dans une diffusion programmée |
400 BadRequest | GroupUsedInSmsPlusSubKeyword | Opération impossible : Ce groupe est associé à une règle de routage SMS+ |
- Ajouter des utilisateurs à un groupe
:id-group
/add/users
Ce point d'accès permet d'ajouter des utilisateurs existants à un groupe.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/add/users" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["id_user1", "id_user_2"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/add/users");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "[\"id_user1\", \"id_user_2\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/add/users", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var userIds = new string[] {"id_user1", "id_user2"};
request.AddParameter("application/json", JsonConvert.SerializeObject(userIds), ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/add/users", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
dim userIds = New string() {"0b3ff7bf-55c9-4416-8fb5-d7b216550b51"}
request.AddParameter("application/json", JsonConvert.SerializeObject(userIds), ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/add/users";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["id_user1", "id_user_2"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/add/users"
json := `["id_user1", "id_user_2", ...]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Champ | Type | Description |
---|---|---|
id_group | String | Identifiant du groupe auquel rajouter les utlisateurs |
- Payload
Tableau avec les identifiants des utilisateurs à ajouter au groupe
Format de réponse
- Status code : 200 Ok
- Payload : N/A
Erreurs possibles
Status HTTP | Code | Detail | Description |
---|---|---|---|
404 NotFound | N/A | N/A | Le groupe n'existe pas |
400 BadRequest | ReferenceNotFound | Id de l'utilisateur | L'identifiant de l'utilisateur renseigné n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou sur l'utilisateur que vous souhaitez associer |
- Retirer des utilisateurs d'un groupe
:id-group
/remove/users
Ce point d'accès permet de retirer des utilisateurs existants d'un groupe.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/remove/users" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '["id_user1", "id_user_2"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/remove/users");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "[\"id_user1\", \"id_user_2\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/remove/users", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var userIds = new string[] {"id_user1", "id_user2"};
request.AddParameter("application/json", JsonConvert.SerializeObject(userIds), ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/remove/users", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
dim userIds = New string() {"0b3ff7bf-55c9-4416-8fb5-d7b216550b51"}
request.AddParameter("application/json", JsonConvert.SerializeObject(userIds), ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/remove/users";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["id_user1", "id_user_2"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/remove/users"
json := `["id_user1", "id_user_2", ...]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Champ | Type | Description |
---|---|---|
id_group | String | Identifiant du groupe auquel retirer les utilisateurs |
- Payload
Tableau avec les identifiants des utilisateurs à retirer du groupe
Format de réponse
- Status code : 200 Ok
- Payload: N/A
Erreurs possibles
Status HTTP | Code | Detail | Description |
---|---|---|---|
404 NotFound | N/A | N/A | Le groupe n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou sur l'utilisateur que vous souhaitez associer |
400 BadRequest | ReferenceNotFound | Id de l'utilisateur | L'identifiant de l'utilisateur renseigné n'existe pas |
400 BadRequest | CannotRemoveOwnerFromGroup | groups-Nom du groupe | Le propriétaire d'un groupe ne peut pas être retiré du groupe |
400 BadRequest | CannotRemoveUserFromDefaultGroup | Opération impossible : C'est le groupe par défaut d'un utilisateur | |
400 BadRequest | CannotRemoveUserFromHisLastGroup | Opération impossible : C'est le dernier groupe d'un utilisateur |
- Récupérer les émetteurs personnalisés
:id-group
/custom-senders/:type
Ce point d'accès permet de récuperer la liste des émetteurs personnalisés pour un groupe et un type donné
Types possibles : OADC, EMAIL, DOMAIN, FAX, VOICE
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/custom-senders/[type]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/custom-senders/[type]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
Type |
CustomSenderType | le type d'émetteur personnalisé. |
CustomSenderType
Les valeurs possibles sont:
OADC
, EMAIL
, FAX
, VOICE
Format de réponse
Format de réponse
["email1@sender.com", "email2@sender.com"]
- Status code :
200 Ok
- Response Body :
Renvoie un tableau d'émetteurs personnalisés (String) du type demandé
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
400 BadRequest | InvalidValue | La valeur recherché n'est pas valide, valeurs valides : OADC, EMAIL, FAX, VOICE |
- Modifier les émetteurs personnalisés associés à un groupe
:id-group
/custom-senders/:type
Ce point d'accès permet de modifier les émetteurs personnalisés associés à un groupe pour un type donné
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["oadc1", "oadc2"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "[\"oadc1\", \"oadc2\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/custom-senders/[type]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"["oadc1", ""oadc2""]";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/custom-senders/[type]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "[""oadc1"", ""oadc2""]"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "'https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["oadc1", "oadc2"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]"
json := `["oadc1", "oadc2"]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
type |
CustomSenderType | le type d'émetteur personnalisé. |
CustomSenderType
Les valeurs possibles sont:
OADC
, EMAIL
, FAX
, VOICE
- Payload
Un tableau d'émetteurs personnalisés (String) correspondants au type donné
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code | Description |
---|---|---|
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
400 BadRequest | CustomSenderCantAffectDomainToGroup | Le type DOMAIN n'est pas disponible pour les groupes |
400 BadRequest | NotEmpty | La liste des émetteurs personnalisés à affecter est vide |
- Vérifier si la personnalisation sms est activée pour un groupe
:id-group
/oadc-enabled
Ce point d'accès permet de récuperer l'état de la personnalisation sms pour un groupe
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/oadc-enabled", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/oadc-enabled", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
true
- Status code :
200 Ok
- Response Body :
Renvoie un booléen indiquant l'état actuel de la personnalisation sms pour le groupe
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Définir la personnalisation sms pour un groupe
:id-group
/oadc-enabled
Ce point d'accès permet de définir l'état de la personnalisation sms pour un groupe
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d 'true'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "true";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/oadc-enabled", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"true";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/oadc-enabled", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "true"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='true';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/oadc-enabled"
json := `true`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
- Payload :
Un boolean spécifiant l'état voulu
- Status code :
200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Créer un email personnalisé
:id-group
/custom-senders/EMAIL
Ce point d'accès permet de créer des emails personnalisés pour un groupe.
Les noms de domaine des emails que vous tentez de créer doivent faire partie des noms de domaine vous ayant été attribués
(Récupérer les émetteurs personnalisés disponibles)
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/EMAIL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["monemail@domain.com"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/EMAIL");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "[\"monemail@domain.com\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/custom-senders/EMAIL", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"[""monemail@domain.com""]";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/custom-senders/EMAIL", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "[""monemail@domain.com""]"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["monemail@domain.com"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/custom-senders/EMAIL"
json := `["monemail@domain.com""]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
un tableau contenant les adresses emails que vous souhaitez créer au format String
Format de réponse
Format de réponse
["monemail@domain.com"]
- Status code : 201 Created
- Response Body :
Un tableau contenant les emails créés au format String
Erreurs possibles
Status HTTP | Code | Description |
---|---|---|
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe auquel vous souhaitez accéder |
400 BadRequest | Invalid | L'adresse email n'est pas valide |
400 BadRequest | CustomSenderInvalidEmail | Le nom de domaine utilisé n'est pas autorisé |
400 BadRequest | NotNull | La liste d'emails est vide |
400 BadRequest | CustomSenderAlreadyExist | L'émetteur personnalisé existe déjà |
2. Gérer ses utilisateurs
Les utilisateurs de l'application peuvent avoir les rôles Administrateur, Superviseur ou Diffuseur.
Il est possible de créer/modifier/supprimer les utilisateurs superviseurs et diffuseurs et de gérer leurs informations (nom, prénom, mail ...) ainsi que de configurer leurs groupes, ...
Structure d'un utilisateur
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
id | String | false | true | Identifiant unique de l'utilisateur |
managerId | String | false | true | Identifiant du manager |
role | rôle | false | true | Role |
groupIds | String[] | false | true | Liste des groupes auxquels appartient l'utilisateur |
monitoredGroupIds | String[] | false | false | Liste des groupes que l'utilisateur surveille |
mail2smsDefaultGroupId | String | false | true (si option) | Groupe par défaut utilisé par l'interface mail (ne renseigner que si le compte a l'option InterfaceMail ) |
webDefaultGroupId | String | false | true | Groupe par défaut utilisé dans l'IHM |
lightAPIDefaultGroupId | String | false | true (si option) | Groupe par défaut utilisé par l'API light (ne renseigner que si le compte a l'option LightAPI ) |
lightAPIAccessToken | String | true | N/A | Clé d'API Light (Affiché uniquement si le compte a l'option LightAPI ) |
login | String | false | true | login de l'utilisateur |
name | String | false | true | Nom |
firstName | String | false | true | Prénom |
String | false | true | ||
doNotSendEmail | boolean | false | false | Indiquer si l'adresse email de cet utilisateur ne doit pas recevoir des messages (bilan d'envois, notification de réponse, etc.) |
unreachableSmsNumberQuarantineEnabled | boolean | false | false | Indiquer si les numéros injoignables doivent être mis en quarantaine lors de l'envoi d'un SMS (activé par défaut) |
landline | String | false | false | Numéro de téléphone |
cellular | String | false | false | Numéro de mobile |
faxNumber | String | false | false | Numéro de fax |
frequencyReportDistribution | fréquence | false | false | Fréquence d'envoi des rapports de diffusions |
receiveAllReports | boolean | false | false | Envoyer une copie des bilans de fin de campagnes à cet utilisateur |
activeStatus | boolean | false | false | Statut de l'utilisateur |
affectableContracts | String[] | false | false (si option) | Liste des contrats affectables à ses subalternes (si option entités facturables et utilisateur Superviseur ) |
defaultAffectableContract | String | false | false (si option) | Contrat affectable à ses subalternes par défaut (si option entités facturables et utilisateur Superviseur ) |
affectedContract | String | false | false (si option) | Contrat affecté à l'utilisateur (si option entités facturables ) |
forwardReplies | boolean | false | false (si option) | Transférer les réponses SMS par email (si option réponse SMS ) |
forwardSmsPlus | boolean | false | false (si option) | Autoriser l'envoi d'email à cet utilisateur lors de réception de SMS+ (si option SMS+ ) |
ackEmailInterfaceDiffusion | boolean | false | false (si option) | Recevoir les emails de confirmation de prise en compte pour les diffusions lancées par Email interface |
managedUserIds | String[] | true | N/A | Liste des identifiants des subalternes |
cvo | String | true | N/A | Identifiant du contrat principal |
createdAt | String | true | N/A | Date de création |
updatedAt | String | true | N/A | Date de la dernière modification |
Rôle
Valeurs autorisées : SUPERVISEUR
,DIFFUSEUR
Fréquence
Valeurs autorisées : CURRENT
, DAILY
, NEVER
- Lister les utilisateurs
Ce point d'accès permet de récupérer la liste paginée des utilisateurs sous sa responsabilité.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/users" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
N/A
- Payload
N/A
Format de réponse
Format de réponse
{ "content": [{ "id": "95880138-2d59-42a8-9ca0-3365128d761d", "name": "Da silva", "firstName": "Raphaël", "cvo": "CVOSI38417821", "login": "superviseur", "role": "SUPERVISEUR", "email": "harumclara.meyer@hotmail.fr", "landline": "+33187921607", "cellular": "+33734139526", "faxNumber": "+33150082961", "createdAt": "2018-02-02T15:47:02.704+01:00", "updatedAt": "2018-02-02T15:47:02.704+01:00", "groupIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed", "ec278b31-6ace-4c94-a52a-daf500f6cf9f", "46dc46df-1beb-4656-8b1c-69c65d8d2533", "653ee337-04e6-405c-8ce6-9545bdf5e293"], "monitoredGroupIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed"], "mail2smsDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "webDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "lightAPIDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "frequencyReportDistribution": "NEVER", "receiveAllReports": false, "lightAPIAccessToken": "67c1d0d1-f1b3-433b-8c75-e31fe037e258", "activeStatus": true, "managerId": "0b3ff7bf-55c9-4416-8fb5-d7b216550b51", "managedUserIds": ["5f065e71-f4b8-496c-8440-781843f62cf6"], "affectableContracts": ["CVOSI38417821"], "defaultAffectableContract": "CVOSI38417821", "affectedContract": "CVOSI38417821", "forwardReplies": true, "forwardSmsPlus": true }, { "id": "d5ef11d0-f448-415c-ac9a-f9eff1db276a", "name": "Philippe", "firstName": "Mael", "cvo": "CVOSI38417821", "login": "diffuseur1", "role": "DIFFUSEUR", "email": "delenitiambre.bernard@hotmail.fr", "landline": "+33129589432", "cellular": "+33799114892", "createdAt": "2018-02-02T15:47:02.750+01:00", "updatedAt": "2018-02-02T15:47:02.750+01:00", "groupIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed", "ec278b31-6ace-4c94-a52a-daf500f6cf9f", "46dc46df-1beb-4656-8b1c-69c65d8d2533", "653ee337-04e6-405c-8ce6-9545bdf5e293"], "monitoredGroupIds": [], "mail2smsDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "webDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "lightAPIDefaultGroupId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "frequencyReportDistribution": "NEVER", "receiveAllReports": false, "lightAPIAccessToken": "22f4441e-3489-47b3-bbf2-20f7835c2cb3", "activeStatus": true, "managerId": "5f065e71-f4b8-496c-8440-781843f62cf6", "managedUserIds": [], "affectableContracts": [], "affectedContract": "CVOSI38417821", "forwardReplies": true, "forwardSmsPlus": true }], "totalPages": 1, "last": true, "totalElements": 2, "first": true, "size": 10, "number": 0, "sort": [{ "direction": "ASC", "property": "name", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }, { "direction": "ASC", "property": "firstName", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }], "numberOfElements": 2 }
- Status code : 200 OK
- Response Body : Retourne une liste d'objets utilisateur
Filtres
Il est possible de filtrer les résultats des utilisateurs à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
managerUserId | String | identifiant du manager |
roles | Role[] | Liste des rôles |
fullName | String | Nom et prénom |
activeStatus | Boolean | Statut |
affectedContract | String | Identifiant du contrat affecté |
affectableContract | String | Identifiant du contrat affectable (dans le cas des superviseurs) |
groupId | String | identifiant du groupe dont sont membres les utilisateurs |
Par exemple, la requête ci-dessous recherche les utilisateurs ayant pour rôle DIFFUSEUR
.
curl -X GET "https://[SERVER_URL]/api/v1.2/users?roles=DIFFUSEUR"
- Récupérer un utilisateur
:id-user
Ce point d'accès permet de récupérer un utilisateur à partir de son identifiant .
On peut aussi récupérer l'utilisateur courant en remplaçant le /api/v1.2/users/:id-user
par /api/v1.2/users/me
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/users/[id_user]" \
-H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur |
Format de réponse
Format de réponse
{ "id": "d5ef11d0-f448-415c-ac9a-f9eff1db276a", "name": "Philippe", "firstName": "Mael", "cvo": "CVOSI38417821", "login": "diffuseur1", "role": "DIFFUSEUR", "email": "delenitiambre.bernard@hotmail.fr", "landline": "+33129589432", "cellular": "+33799114892", "createdAt": "2018-02-02T15:47:02.750+01:00", "updatedAt": "2018-02-02T15:47:02.750+01:00", "userIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed", "46dc46df-1beb-4656-8b1c-69c65d8d2533", "ec278b31-6ace-4c94-a52a-daf500f6cf9f", "653ee337-04e6-405c-8ce6-9545bdf5e293"], "groupIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed", "ec278b31-6ace-4c94-a52a-daf500f6cf9f", "46dc46df-1beb-4656-8b1c-69c65d8d2533", "653ee337-04e6-405c-8ce6-9545bdf5e293"], "monitoredGroupIds": ["b4945cae-bb77-4f39-8fa6-b10226f75d08", "d2ee406a-3434-46aa-9285-1206707ceeed"], "mail2smsDefaultuserId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "webDefaultuserId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "lightAPIDefaultuserId": "46dc46df-1beb-4656-8b1c-69c65d8d2533", "frequencyReportDistribution": "NEVER", "receiveAllReports": false, "lightAPIAccessToken": "22f4441e-3489-47b3-bbf2-20f7835c2cb3", "activeStatus": true, "managerId": "5f065e71-f4b8-496c-8440-781843f62cf6", "managedUserIds": [], "affectableContracts": [], "affectedContract": "CVOSI38417821", "forwardReplies": true, "forwardSmsPlus": true }
- Status code : 200 Ok
- Response Body : Renvoie un objet utilisateur
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
- Créer un utilisateur
Ce point d'accès permet de créer un utilisateur.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/users" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
con.setDoOutput(true);
String postJsonData = "{" +
" \"managerId\": \"28edc6a7-df1f-4c3f-bed7-2ada375a9146\"," +
" \"role\": \"SUPERVISEUR\"," +
" \"groupIds\": [\"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"]," +
" \"monitoredGroupIds\": [\"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"]," +
" \"webDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"mail2smsDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"lightAPIDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"login\": \"4fb0d0de_0840_4a13_9dea_ff1976693a8a\"," +
" \"name\": \"Doe\"," +
" \"firstName\": \"John\"," +
" \"email\": \"email@orange.com\"," +
" \"frequencyReportDistribution\": \"CURRENT\"," +
" \"receiveAllReports\": \"true\"," +
" \"affectableContracts\": [\"CVOSI03856054\"]," +
" \"defaultAffectableContract\": \"CVOSI03856054\"," +
" \"affectedContract\": \"CVOSI03856054\"," +
" \"forwardReplies\": \"false\"," +
" \"forwardSmsPlus\": \"false\"" +
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"{
""managerId"": ""28edc6a7-df1f-4c3f-bed7-2ada375a9146"",
""role"": ""SUPERVISEUR"",
""groupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""monitoredGroupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""webDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""mail2smsDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""lightAPIDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""login"": ""4fb0d0de_0840_4a13_9dea_ff1976693a8a"",
""name"": ""Doe"",
""firstName"": ""John"",
""email"": ""email@orange.com"",
""frequencyReportDistribution"": ""CURRENT"",
""receiveAllReports"": ""true"",
""affectableContracts"": [""CVOSI03856054""],
""defaultAffectableContract"": ""CVOSI03856054"",
""affectedContract"": ""CVOSI03856054"",
""forwardReplies"": ""false"",
""forwardSmsPlus"": ""false""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users", Method.POST)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""managerId"": ""28edc6a7-df1f-4c3f-bed7-2ada375a9146"",
""role"": ""SUPERVISEUR"",
""groupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""monitoredGroupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""webDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""mail2smsDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""lightAPIDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""login"": ""4fb0d0de_0840_4a13_9dea_ff1976693a8a"",
""name"": ""Doe"",
""firstName"": ""John"",
""email"": ""email@orange.com"",
""frequencyReportDistribution"": ""CURRENT"",
""receiveAllReports"": ""true"",
""affectableContracts"": [""CVOSI03856054""],
""defaultAffectableContract"": ""CVOSI03856054"",
""affectedContract"": ""CVOSI03856054"",
""forwardReplies"": ""false"",
""forwardSmsPlus"": ""false""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users"
json := `{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
Champ | Type | Requis | Description |
---|---|---|---|
managerId | String | false | Identifiant du manager (l'identifiant de l'utilisateur connecté est utilisé par défaut) |
role | rôle | true | Role |
groupIds | String[] | true | Liste des groupes auxquels appartient l'utilisateur |
monitoredGroupIds | String[] | false | Liste des groupes que l'utilisateur surveille |
mail2smsDefaultGroupId | String | true (si option) | Groupe par défaut utilisé par l'interface mail (ne renseigner que si le compte a l'option InterfaceMail ) |
webDefaultGroupId | String | true | Groupe par défaut utilisé dans l'IHM |
lightAPIDefaultGroupId | String | true (si option) | Groupe par défaut utilisé par l'API light (ne renseigner que si le compte a l'option lightAPI ) |
login | String | true | login de l'utilisateur |
name | String | true | Nom |
firstName | String | true | Prénom |
String | true | ||
landline | String | false | Numéro de téléphone |
cellular | String | false | Numéro de mobile |
faxNumber | String | false | Numéro de fax |
frequencyReportDistribution | fréquence | false | Fréquence d'envoi des rapports de diffusions |
receiveAllReports | boolean | false | Recevoir une copie des bilans de fin de campagnes à cet utilisateur |
activeStatus | boolean | false | Statut de l'utilisateur |
affectableContracts | String[] | false (si option) | Liste des contrats affectables à ses subalternes (si option entités facturable et utilisateur Superviseur ) |
defaultAffectableContract | String | false (si option) | Contrat affectable à ses subalternes par défaut (si option entités facturable et utilisateur Superviseur ) |
affectedContract | String | false (si option) | Contrat affecté à l'utilisateur (si option entités facturable ) |
forwardReplies | boolean | false | Transférer les réponses SMS par email |
forwardSmsPlus | boolean | false | Autoriser l'envoi d'email à cet utilisateur lors de réception de SMS+ |
sendConnectionKit | boolean | false | Indiquer si le kit de connexion sera envoyé à la création de l'utilisateur (valeur par défaut: true) |
Format de réponse
Format de réponse
{ "id": "2b58803b-c018-44ed-9427-7ecf145c971c", "name": "Doe", "firstName": "John", "cvo": "CVOSI03856054", "login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a", "role": "SUPERVISEUR", "email": "email@orange.com", "createdAt": "2018-03-07T14:33:06.203+01:00", "updatedAt": "2018-03-07T14:33:06.391+01:00", "groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"], "monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"], "mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "frequencyReportDistribution": "CURRENT", "receiveAllReports": true, "lightAPIAccessToken": "ec1105dd-e331-4032-afa6-2c47f92da64c", "activeStatus": true, "managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146", "managedUserIds": [], "affectableContracts": ["CVOSI03856054"], "defaultAffectableContract": "CVOSI03856054", "affectedContract": "CVOSI03856054", "forwardReplies": false, "forwardSmsPlus": false }
- Status code : 201 Created
- Response Body : Renvoie un objet utilisateur
Erreurs possibles
Status HTTP | Code | Details | Description |
---|---|---|---|
404 NotFound | NotFound | N/A | L'utilisateur ([id_user]) n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou le manager que vous souhaitez associer |
400 BadRequest | ReferenceNotFound | nom du champ | Le champ indiqué par "details" est un identifiant qui n'existe pas |
400 BadRequest | NotEmpty | nom du champ | Le champ indiqué par "details" ne doit pas être vide |
400 BadRequest | NotNull | nom du champ | Le champ indiqué par "details" est obligatoire |
400 BadRequest | InvalidValue | nom du champ | La valeur renseignée n'est pas valide (pour les champs role ou frequencyReportDistribtion ) |
400 BadRequest | UserMustBeMemberOfMonitoredGroup | nom du groupe | Le groupe ne peut pas être surveillé si l'utilisateur n'en est pas membre |
400 BadRequest | InvalidMonitoredGroup | N/A | Vous n'avez pas les droits sur le groupe vous souhaitez définir comme surveillé |
400 BadRequest | AdminAndDiffusorsCanNotHaveAffectableContracts | nom du champ | Les administrateurs et les utilisateur ne peuvent pas avoir d'entité facturable délégable |
400 BadRequest | NotAnEntityContract | nom du champ | Entité(s) facturable(s) non délégable(s) pour le compte |
400 BadRequest | ContractNotAffectableByManager | nom du champ | Entité(s) facturable(s) non délégable(s) par le superviseur |
400 BadRequest | MissingAffectableContract | nom du champ | Veuillez sélectionner au moins une entité facturable délégable par défaut |
400 BadRequest | ManageEntityOptionInactive | nom du champ | Le champ indiqué par "details" ne doit pas être spécifié si le compte n'a pas l'option entités facturables |
400 BadRequest | LightAPIOptionInactive | lightAPIDefaultGroupId | Le champ "lightAPIDefaultGroupId" ne doit pas être spécifié si le compte n'a pas l'option API Light |
400 BadRequest | EmailInterfaceOptionInactive | mail2smsDefaultGroupId | Le champ "mail2smsDefaultGroupId" ne doit pas être spécifié si le compte n'a pas l'option email interface |
400 BadRequest | SmsPlusOptionInactive | forwardSmsPlus | Le champ "forwardSmsPlus" ne doit pas être spécifié si le compte n'a pas l'option SMS+ |
- Modifier un utilisateur
:id-user
Ce point d'accès permet de modifier un utilisateur.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/users/[id_user]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
con.setDoOutput(true);
String PUTJsonData = "{" +
" \"managerId\": \"28edc6a7-df1f-4c3f-bed7-2ada375a9146\"," +
" \"role\": \"SUPERVISEUR\"," +
" \"groupIds\": [\"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"]," +
" \"monitoredGroupIds\": [\"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"]," +
" \"webDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"mail2smsDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"lightAPIDefaultGroupId\": \"b6bf2049-9618-4f01-b8aa-1e9f8364e42d\"," +
" \"login\": \"4fb0d0de_0840_4a13_9dea_ff1976693a8a\"," +
" \"name\": \"Doe\"," +
" \"firstName\": \"John\"," +
" \"email\": \"email@orange.com\"," +
" \"frequencyReportDistribution\": \"CURRENT\"," +
" \"receiveAllReports\": \"true\"," +
" \"affectableContracts\": [\"CVOSI03856054\"]," +
" \"defaultAffectableContract\": \"CVOSI03856054\"," +
" \"affectedContract\": \"CVOSI03856054\"," +
" \"forwardReplies\": \"false\"," +
" \"forwardSmsPlus\": \"false\"" +
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(PUTJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"{
""managerId"": ""28edc6a7-df1f-4c3f-bed7-2ada375a9146"",
""role"": ""SUPERVISEUR"",
""groupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""monitoredGroupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""webDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""mail2smsDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""lightAPIDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""login"": ""4fb0d0de_0840_4a13_9dea_ff1976693a8a"",
""name"": ""Doe"",
""firstName"": ""John"",
""email"": ""email@orange.com"",
""frequencyReportDistribution"": ""CURRENT"",
""receiveAllReports"": ""true"",
""affectableContracts"": [""CVOSI03856054""],
""defaultAffectableContract"": ""CVOSI03856054"",
""affectedContract"": ""CVOSI03856054"",
""forwardReplies"": ""false"",
""forwardSmsPlus"": ""false""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]", Method.PUT)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""managerId"": ""28edc6a7-df1f-4c3f-bed7-2ada375a9146"",
""role"": ""SUPERVISEUR"",
""groupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""monitoredGroupIds"": [""b6bf2049-9618-4f01-b8aa-1e9f8364e42d""],
""webDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""mail2smsDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""lightAPIDefaultGroupId"": ""b6bf2049-9618-4f01-b8aa-1e9f8364e42d"",
""login"": ""4fb0d0de_0840_4a13_9dea_ff1976693a8a"",
""name"": ""Doe"",
""firstName"": ""John"",
""email"": ""email@orange.com"",
""frequencyReportDistribution"": ""CURRENT"",
""receiveAllReports"": ""true"",
""affectableContracts"": [""CVOSI03856054""],
""defaultAffectableContract"": ""CVOSI03856054"",
""affectedContract"": ""CVOSI03856054"",
""forwardReplies"": ""false"",
""forwardSmsPlus"": ""false""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]"
json := `{
"managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146",
"role": "SUPERVISEUR",
"groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"],
"webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d",
"login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a",
"name": "Doe",
"firstName": "John",
"email": "email@orange.com",
"frequencyReportDistribution": "CURRENT",
"receiveAllReports": "true",
"affectableContracts": ["CVOSI03856054"],
"defaultAffectableContract": "CVOSI03856054",
"affectedContract": "CVOSI03856054",
"forwardReplies": "false",
"forwardSmsPlus": "false"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
Champ | Type | Requis | Description |
---|---|---|---|
id | String | true | Identifiant unique de l'utilisateur |
managerId | String | true | Identifiant du manager |
role | rôle | true | Role |
groupIds | String[] | true | Liste des groupes auxquels appartient l'utilisateur |
monitoredGroupIds | String[] | false | Liste des groupes que l'utilisateur surveille |
mail2smsDefaultGroupId | String | true (si option) | Groupe par défaut utilisé par l'interface mail (ne renseigner que si le compte a l'option InterfaceMail ) |
webDefaultGroupId | String | true | Groupe par défaut utilisé dans l'IHM |
lightAPIDefaultGroupId | String | true (si option) | Groupe par défaut utilisé par l'API light (ne renseigner que si le compte a l'option LightAPI ) |
login | String | true | login de l'utilisateur |
name | String | true | Nom |
firstName | String | true | Prénom |
String | true | ||
landline | String | false | Numéro de téléphone |
cellular | String | false | Numéro de mobile |
faxNumber | String | false | Numéro de fax |
frequencyReportDistribution | fréquence | false | Fréquence d'envoi des rapports de diffusions |
receiveAllReports | boolean | false | Recevoir une copie des bilans de fin de campagnes à cet utilisateur |
activeStatus | boolean | false | Statut de l'utilisateur |
affectableContracts | String[] | false (si option) | Liste des contrats affectables à ses subalternes (si option entités facturable et utilisateur Superviseur ) |
defaultAffectableContract | String | false (si option) | Contrat affectable à ses subalternes par défaut (si option entités facturable et utilisateur Superviseur ) |
affectedContract | String | false (si option) | Contrat affecté à l'utilisateur (si option entités facturable ) |
forwardReplies | boolean | false (si option) | Transférer les réponses SMS par email (si option réponse SMS ) |
forwardSmsPlus | boolean | false (si option) | Autoriser l'envoi d'email à cet utilisateur lors de réception de SMS+ (si option SMS+ ) |
Format de réponse
Format de réponse
{ "id": "2b58803b-c018-44ed-9427-7ecf145c971c", "name": "Doe", "firstName": "John", "cvo": "CVOSI03856054", "login": "4fb0d0de_0840_4a13_9dea_ff1976693a8a", "role": "SUPERVISEUR", "email": "email@orange.com", "createdAt": "2018-03-07T14:33:06.203+01:00", "updatedAt": "2018-03-07T14:33:06.391+01:00", "groupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"], "monitoredGroupIds": ["b6bf2049-9618-4f01-b8aa-1e9f8364e42d"], "mail2smsDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "webDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "lightAPIDefaultGroupId": "b6bf2049-9618-4f01-b8aa-1e9f8364e42d", "frequencyReportDistribution": "CURRENT", "receiveAllReports": true, "lightAPIAccessToken": "ec1105dd-e331-4032-afa6-2c47f92da64c", "activeStatus": true, "managerId": "28edc6a7-df1f-4c3f-bed7-2ada375a9146", "managedUserIds": [], "affectableContracts": ["CVOSI03856054"], "defaultAffectableContract": "CVOSI03856054", "affectedContract": "CVOSI03856054", "forwardReplies": false, "forwardSmsPlus": false }
- Status code : 200 OK
- Response Body : Renvoie un objet utilisateur
Erreurs possibles
Status HTTP | Code | Details | Description |
---|---|---|---|
404 NotFound | NotFound | N/A | L'utilisateur ([id_user]) n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou le manager que vous souhaitez associer |
400 BadRequest | ReferenceNotFound | nom du champ | Le champ indiqué par "details" est un identifiant qui n'existe pas |
400 BadRequest | NotEmpty | nom du champ | Le champ indiqué par "details" ne doit pas être vide |
400 BadRequest | UserRoleCannotBeChanged | N/A | Le rôle d'un utilisateur ne peut pas être modifié |
400 BadRequest | CannotModifyManager | N/A | Le supérieur hiérarchique ne peut pas être modifié |
400 BadRequest | InvalidValue | nom du champ | La valeur renseignée n'est pas valide (pour les champs role ou frequencyReportDistribution ) |
400 BadRequest | UserMustBeMemberOfMonitoredGroup | nom du groupe | Le groupe ne peut pas être surveillé si l'utilisateur n'en est pas membre |
400 BadRequest | InvalidMonitoredGroup | N/A | Vous n'avez pas les droits sur le groupe que vous souhaitez définir comme surveillé |
400 BadRequest | AdminAndDiffusorsCanNotHaveAffectableContracts | nom du champ | Les administrateurs et les diffuseurs ne peuvent pas avoir d'entité facturable délégable |
400 BadRequest | NotAnEntityContract | nom du champ | Entité(s) facturable(s) non délégable(s) pour le compte |
400 BadRequest | ContractNotAffectableByManager | nom du champ | Entité(s) facturable(s) non délégable(s) par le superviseur |
400 BadRequest | MissingAffectableContract | nom du champ | Veuillez sélectionner au moins une entité facturable délégable par défaut |
- Supprimer un utilisateur
:id-user
Ce point d'accès permet de supprimer un utilisateur.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/users/[id_user]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]", Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2");
Dim request = new RestRequest("/users/[id_user]", Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
Dim response as IRestResponse = client.Execute(request);
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_user | String | L'identifiant de l'utilisateur à supprimer |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur l'utilisateur que vous souhaitez supprimer |
- changer le mot de passe d'un utilisateur
Ce point d'accès permet de changer le mot de passe d'un utilisateur.
Ce nouveau mot de passe peut être : - temporaire : l'utilisateur devra alors changer son mot de passe lors de sa première connexion sur l'IHM - définitive : l'utilisateur peut directement utiliser son nouveau mot de passe
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/users/[id_user]/change-password" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"changeAtFirstConnection": "true",
"newPassword": "01PaSsW0rd!"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/change-password");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
con.setDoOutput(true);
String postJsonData = "{" +
" \"changeAtFirstConnection\": \"true\", " +
" \"newPassword\": \"01PaSsW0rd!\" " +
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/change-password", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"{
""changeAtFirstConnection"": ""true"",
""newPassword"": ""01PaSsW0rd!""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/change-password", Method.POST)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""changeAtFirstConnection"": ""true"",
""newPassword"": ""01PaSsW0rd!""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/change-password";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"changeAtFirstConnection": "true",
"newPassword": "01PaSsW0rd!"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/change-password"
json := `{
"changeAtFirstConnection": "true",
"newPassword": "01PaSsW0rd!"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
Champ | Type | Description |
---|---|---|
changeAtFirstConnection | boolean | indique si le nouveau mot de passe est temporaire ou définitif |
newPassword | String | Nouveau mot de passe |
Format de réponse
- Status code : 200 OK
- Response Body : N/A
Erreurs possibles
Status HTTP | Code | Details | Description |
---|---|---|---|
404 NotFound | NotFound | N/A | L'utilisateur ([id_user]) n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou le manager que vous souhaitez associer |
- Récupérer les permissions d'un utilisateur
:id-user
/permissions
Ce point d'accès permet de récupérer les permissions d'un utilisateur à partir de son identifiant .
Liste des permissions
Permissions | Description |
---|---|
templateRead | Modèle de diffusion, messages prédéfinis: Lecture |
templateWrite | Modèle de diffusion, messages prédéfinis: Ecriture |
contactRead | Contacts, liste de diffusion: Lecture |
contactWrite | Contacts, liste de diffusion: Ecriture |
strategyRead | Stratégie: Lecture |
strategyWrite | Stratégie: Ecriture |
statisticsRead | Statistiques: Lecture |
diffusionRead | Bilan des messages, bilan des envois |
diffusionUIWrite | Diffusion autorisée par l'IHM et par API |
diffusionEmailWrite | Diffusion autorisée par l'interface mail (si option du compte activée) |
diffusionLightAPIWrite | Diffusion autorisée par API Light |
diffuseurWrite | Utilisateur de type diffuseur: Ecriture |
superviseurWrite | Utilisateur de type superviseur: Ecriture |
smsPlusRoutingRead | Configuration du routage SMS+: Lecture |
smsPlusRoutingWrite | Configuration du routage SMS+: Ecriture |
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/permissions", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/permissions", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur |
Format de réponse
Format de réponse
["strategyRead", "templateRead", "diffuseurWrite", "diffusionUIWrite"]
- Status code : 200 Ok
- Response Body : Renvoie la liste des permissions de l'utilisateur
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
- Modifier les permissions d'un utilisateur
:id-user
/permissions
Ce point d'accès permet de modifier les permissions d'un utilisateur.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["templateRead", "templateWrite", "strategyRead"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
con.setDoOutput(true);
String PUTJsonData = "[\"templateRead\", \"templateWrite\", \"strategyRead\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(PUTJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/permissions", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"[""templateRead"", ""templateWrite"", ""strategyRead""]";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/permissions", Method.PUT)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "[""templateRead"", ""templateWrite"", ""strategyRead""]"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["templateRead", "templateWrite", "strategyRead"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/permissions"
json := `["templateRead", "templateWrite", "strategyRead"]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Status code : 200 OK
- Response Body : N/A
Erreurs possibles
Status HTTP | Code | Details | Description |
---|---|---|---|
404 NotFound | NotFound | N/A | L'utilisateur ([id_user]) n'existe pas |
403 Forbidden | Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou le manager que vous souhaitez associer |
400 Forbidden | UnparsableRequest | Votre requête est mal formée, ou l'une des permissions est mal orthographiée ou n'existe pas |
- Envoyer (ou renvoyer) le kit de connexion d'un utilisateur
Ce point d'accès permet de renvoyer le kit de connexion d'un utilisateur. Ce "kit de connexion" est un mail contenant : - l'url du site web - l'identifiant de l'utilisateur - le lien pour changer son mot de passe - le lien vers le manuel utilisateur
Notez bien que ce mail ne contient pas de mot de passe.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/users/[id_user]/send-connection-kit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/send-connection-kit");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
con.setDoOutput(true);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/send-connection-kit", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/send-connection-kit", Method.PUT)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/send-connection-kit";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/send-connection-kit"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
fmt.Println(res)
}
- Payload : N/A
Format de réponse
- Status code : 200 OK
- Response Body : N/A
Erreurs possibles
Status HTTP | Code | Details | Description |
---|---|---|---|
404 NotFound | NotFound | N/A | L'utilisateur ([id_user]) n'existe pas |
- Récupérer les émetteurs personnalisés
:id-user
/custom-senders/:type
Ce point d'accès permet de récuperer la liste des émetteurs personnalisés pour un utilisateur et un type donné
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/custom-senders/[type]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/custom-senders/[type]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur. |
Type |
CustomSenderType | le type d'émetteur personnalisé. |
CustomSenderType
Les valeurs possibles sont:
OADC
, EMAIL
, DOMAIN
, FAX
, VOICE
Format de réponse
Format de réponse
["email1@sender.com", "email2@sender.com"]
- Status code :
200 Ok
- Response Body :
Renvoie un tableau d'émetteurs personnalisés (String) du type demandé
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
- Modifier les émetteurs personnalisés associés à un utilisateur
:id-user
/custom-senders/:type
Ce point d'accès permet de modifier les émetteurs personnalisés associés à un utilisateur pour un type donné
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["oadc1", "oadc2"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "[\"oadc1\", \"oadc2\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/custom-senders/[type]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"["oadc1", ""oadc2""]";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/custom-senders/[type]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "[""oadc1"", ""oadc2""]"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["oadc1", "oadc2"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/[type]"
json := `["oadc1", "oadc2"]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur. |
type |
CustomSenderType | le type d'émetteur personnalisé. |
CustomSenderType
Les valeurs possibles sont:
OADC
, EMAIL
, DOMAIN
, FAX
, VOICE
- Payload
Un tableau d'émetteurs personnalisés (String) correspondants au type donné
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
400 BadRequest | NotEmpty | La liste des émetteurs personnalisés à affecter est vide |
- Vérifier si la personnalisation sms est activée pour un utilisateur
:id-user
/oadc-enabled
Ce point d'accès permet de récuperer l'état de la personnalisation sms pour un utilisateur
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/oadc-enabled", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/oadc-enabled", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur. |
Format de réponse
Format de réponse
true
- Status code :
200 Ok
- Response Body :
Renvoie un booléen indiquant l'état actuel de la personnalisation sms pour l'utilisateur
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
- Définir la personnalisation sms pour un utilisateur
:id-user
/oadc-enabled
Ce point d'accès permet de définir l'état de la personnalisation sms pour un utilisateur
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d 'true'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "true";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/oadc-enabled", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"true";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/oadc-enabled", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "true"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/oadc-enabled"
json := `true`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-user |
String | L'identifiant unique de l'utilisateur. |
- Payload :
Un boolean spécifiant l'état voulu
- Status code :
200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de l'utilisateur auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'utilisateur auquel vous tentez d'accéder |
- Créer un email personnalisé
:id-user
/custom-senders/EMAIL
Ce point d'accès permet de créer des emails personnalisés pour un utilisateur.
Les noms de domaine des emails que vous tentez de créer doivent faire partie des noms de domaine vous ayant été attribués
(Récupérer les émetteurs personnalisés disponibles)
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/EMAIL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '["monemail@domain.com"]'
URL url = new URL("https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/EMAIL");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "[\"monemail@domain.com\"]";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/users/[id_user]/custom-senders/EMAIL", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.RequestFormat = DataFormat.Json;
var json = @"[""monemail@domain.com""]";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/users/[id_user]/custom-senders/EMAIL", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "[""monemail@domain.com""]"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/EMAIL";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='["monemail@domain.com"]';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/users/[id_user]/custom-senders/EMAIL"
json := `["monemail@domain.com""]`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Payload
un tableau contenant les adresses emails que vous souhaitez créer au format String
Format de réponse
Format de réponse
["monemail@domain.com"]
- Status code : 201 Created
- Response Body :
Un tableau contenant les emails créés au format String
Erreurs possibles
Status HTTP | Code | Description |
---|---|---|
403 Forbidden | Forbidden | Vous n'avez pas les droits sur l'utilisateur auquel vous souhaitez accéder |
400 BadRequest | Invalid | L'adresse email n'est pas valide |
400 BadRequest | CustomSenderInvalidEmail | Le nom de domaine utilisé n'est pas autorisé |
400 BadRequest | NotNull | La liste d'emails est vide |
400 BadRequest | CustomSenderAlreadyExist | L'émetteur personnalisé existe déjà |
3. Gérer ses contacts
Un contact est le destinataire d'un ou plusieurs messages.
C'est une structure qui porte des informations diverses telles que numéros de mobiles, adresse email, adresse postale, etc.
Structure d'un contact
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique du contact |
name | String | false | Le nom du contact |
firstName | String | false | Le prénom du contact |
address | String | false | L'adresse du contact |
city | String | false | La ville du contact |
countryCode | String | false | Le code pays du contact |
postalCode | String | false | Le code postal du contact |
landlineOne | String | false | Le numéro de téléphone fixe 1 |
landlineTwo | String | false | Le numéro de téléphone fixe 2 |
cellularOne | String | false | Le numéro de téléphone portable 1 |
cellularTwo | String | false | Le numéro de téléphone portable 2 |
faxNumber | String | false | Le numéro de fax |
String | false | L'adresse email du contact | |
acquittalNumber | String | false | code personnel d'acquittement du contact |
company | String | false | La société du contact |
position | String | false | La fonction du contact au sein de la société |
createdAt | Date | true | Date de création du contact |
updatedAt | Date | true | Date de dernière modification du contact |
- Créer un contact
:id-group
/contacts
Ce point d'accès permet de créer un contact dans un groupe donné.
Les nom et prénom d'un contact sont obligatoires.
Un contact doit posséder au minimum un numéro de téléphone ou une adresse email.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{\"name\":\"Julien\",\"firstName\":\"Nicolas\",\"landlineOne\":\"+33115610572\",\"email\":\"consequaturlena.vincent@gmail.com\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/contacts", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""Julien"",
""firstName"":""Nicolas"",
""landlineOne"":""+33115610572"",
""email"":""consequaturlena.vincent@gmail.com""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""Julien"",
""firstName"":""Nicolas"",
""landlineOne"":""+33115610572"",
""email"":""consequaturlena.vincent@gmail.com""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts"
json := `{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "Bob", "firstName": "Nicolas", "landlineOne": "+33115610572", "email": "consequaturlenssa.vincent@gmail.com", "createdAt": "2018-05-22T13:23:55.794+02:00", "updatedAt": "2018-05-22T13:23:55.794+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /contacts/:id-contact |
Emplacement du contact créé |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | Msisdn | Le format du numéro de téléphone fourni n'est pas correct |
400 BadRequest | Le format de l'adresse email fournie n'est pas correct | |
400 BadRequest | MissingIdentification | Au moins une information de contact (nom, prénom, société ou fonction) est requise |
- Modifier un contact
:id-group
/contacts/:id-contact
Ce point d'accès permet de modifier un contact dans un groupe donné.
Les nom et prénom d'un contact sont obligatoires.
Un contact doit posséder au minimum un numéro de téléphone ou une adresse email.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"name\":\"Julien\",\"firstName\":\"Nicolas\",\"landlineOne\":\"+33115610572\",\"email\":\"consequaturlena.vincent@gmail.com\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""Julien"",
""firstName"":""Nicolas"",
""landlineOne"":""+33115610572"",
""email"":""consequaturlena.vincent@gmail.com""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""Julien"",
""firstName"":""Nicolas"",
""landlineOne"":""+33115610572"",
""email"":""consequaturlena.vincent@gmail.com""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]"
json := `{
"name":"Julien",
"firstName":"Nicolas",
"landlineOne":"+33115610572",
"email":"consequaturlena.vincent@gmail.com"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant unique du groupe. |
id_contact | String | L'identifiant unique du contact. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "Bob", "firstName": "Nicolas", "landlineOne": "+33115610572", "email": "consequaturlenssa.vincent@gmail.com", "createdAt": "2018-05-22T13:23:55.794+02:00", "updatedAt": "2018-05-22T13:23:55.794+02:00" }
- Status code : 200 OK
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id_group /contacts/:id_contact |
Emplacement du contact modifié |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du contact auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | Msisdn | Le format du numéro de téléphone fourni n'est pas correct |
400 BadRequest | Le format de l'adresse email fournie n'est pas correct | |
400 BadRequest | MissingIdentification | Au moins une information de contact (nom, prénom, société ou fonction) est requise. |
- Supprimer un contact
:id-group
/contacts/:id-contact
Ce point d'accès permet de supprimer un contact d'un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant unique du groupe. |
id_contact | String | L'identifiant unique du contact. |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder |
- Récupérer un contact
:id-group
/contacts/:id-contact
Ce point d'accès permet de récupérer un contact dans un groupe donné, à partir de son identifiant.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-contact | String | L'identifiant unique du contact. |
Format de réponse
Format de réponse
{ "id":"0e82774b-4cae-4347-80fe-10e81ce4a9da", "name":"Julien", "firstName":"Nicolas", "address":"507 rue Fleury Saint-Bernard", "city":"Lakestad", "countryCode":"FRA", "postalCode":"90579", "landlineOne":"+33115610572", "landlineTwo":"+33162370335", "cellularOne":"+33733577490", "cellularTwo":"+33736968801", "faxNumber":"+33117556832", "email":"consequaturlena.vincent@gmail.com", "acquittalNumber":"4858", "company":"Orange", "position":"développeur", "createdAt":"2017-02-27T16:38:36.110+02:00", "updatedAt":"2017-02-27T16:38:36.110+02:00" }
- Status code : 200 Ok
- Response Body : Renvoie un objet contact
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du contact auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les contacts
:id-group
/contacts
Ce point d'accès permet de récupérer la liste paginée des contacts d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
{ "content":[ { "id":"f12edd46-96b8-41d9-baa7-58f42daa9301", "name":"Boyer", "firstName":"Mael", [...] }, { "id":"54032d6f-19cd-4049-8cfe-bd80a563c911", "name":"Le gall", "firstName":"Ethan", [...] }, {...}, { "id":"372c1ede-03d5-41d4-bd2c-0471a3c371be", "name":"Morel", "firstName":"Alexis", [...] } ], "last":false, "first":true, "totalPages":3, "totalElements":25, "numberOfElements":25, "size":10, "number":0 }
- Status code : 200 Ok
- Response Body : Renvoie une liste d'objets contact
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les listes de diffusion d'un contact
:id-group
/contacts/:id-contact
/mailing-lists
Ce point d'accès permet de récupérer les listes de diffusion d'un contact
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]/mailing-lists" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]/mailing-lists");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("groups/[id_group]/contacts/[id_contact]/mailing-lists", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("groups/[id_group]/contacts/[id_contact]/mailing-lists", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]/mailing-lists";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/contacts/[id_contact]/mailing-lists"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant unique du groupe |
id_contact | String | L'identifiant unique du contact |
Format de réponse
Format de réponse
[ { "id":"0e82774b-4cae-6578-12fe-10e81ce4aze", "name":"Mes amis", "contactCount": 5, "description":"Contient mes amis", "createdAt":"2017-05-27T18:38:36.110+02:00", "updatedAt":"2017-02-21T16:38:36.110+02:00" }, { "id":"0e82774b-4cae-6578-12fe-10e81ce4a8qq", "name":"Ma famille", "contactCount": 1, "description":"Contient toute ma famille", "createdAt":"2017-02-27T16:38:36.110+02:00", "updatedAt":"2017-02-27T16:38:36.110+02:00" } ]
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du contact auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
4. Gérer ses listes de diffusion
Une liste de diffusion permet de regrouper des contacts en leur associant un libellé (le nom de la liste de diffusion)
Elle est par la suite utilisée pour réaliser des envois de messages groupés, sans avoir à sélectionner les contacts un par un.
Parmi les listes de diffusion courament utilisées on retrouve : "clients", "le staff", "abonnés", etc...
A SAVOIR
- Une liste de diffusion n'a pas de taille limite, elle peut contenir 50 000 contacts
- Un contact peut appartenir à plusieurs listes de diffusion
- Si deux contacts appartenant à une même liste de diffusion disposent du même numéro de téléphone, le message ne sera émis qu'une seule fois vers le numéro en question
Structure d'une liste de diffusion
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la liste de diffusion |
name | String | false | Le nom de la liste de diffusion |
contactCount | Long | true | Le nombre de contacts présents dans la liste de diffusion |
description | String | false | La description de la liste de diffusion |
createdAt | Date | true | Date de création |
updatedAt | Date | true | Date de dernière modification |
- Créer une liste de diffusion
:id-group
/mailing-lists
Ce point d'accès permet de créer une liste de diffusion.
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '{
"name": "Mes Amis",
"description": "Contient tous mes amis"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"name\": \"Mes amis\",\"description\": \"Contient tous mes amis.\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{"name": "Mes amis","description": "Contient tous mes amis."}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists"
json := `{
"name":"Mes amis",
"description":"Contient tous mes amis."
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\"name\": \"Mes amis\",\"description\": \"Contient tous mes amis.\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
request.AddParameter("application/json", "{""name"": ""Mes amis"",""description"": ""Contient tous mes amis.""}", ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe |
- Payload
Champ | Type | Description |
---|---|---|
name | String | Le nom de la liste de diffusion |
description | String | La description de la liste de diffusion |
Format de réponse
Format de réponse
{ "id": "08274797-b6cb-4adf-8547-e5f44b280a97", "name": "Mes Amis", "contactCount": 0, "description": "Contient tous mes amis", "createdAt": "2018-05-22T13:39:01.602+02:00", "updatedAt": "2018-05-22T13:39:01.602+02:00" }
- Status code : 201 Created
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste du diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | NameNotAvailable | Le nom de la liste de diffusion n'est pas disponible |
- Modifier une liste de diffusion
:id-group
/mailing-lists/:id-mailing-list
Ce point d'accès permet de modifier une liste de diffusion.
Format de requête
Format de requête
curl -X PUT \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '{
"name": "Mes nouveaux Amis",
"description": "Contient tous mes nouveaux amis"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"name\": \"Mes nouveaux amis\",\"description\": \"Contient tous mes nouveaux amis.\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "'https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{"name": "Mes nouveaux amis","description": "Contient tous mes nouveaux amis."}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]"
json := `{
"name":"Mes nouveaux amis",
"description":"Contient tous mes nouveaux amis."
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""Mes nouveaux amis"",
""description"": ""Contient tous mes nouveaux amis.""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""Mes nouveaux amis"",
""description"": ""Contient tous mes nouveaux amis.""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion. |
- Payload
Champ | Type | Description |
---|---|---|
name | String | Le nom de la mailing list |
description | String | La description de la mailing list |
Format de réponse
Format de réponse
{ "id": "08274797-b6cb-4adf-8547-e5f44b280a97", "name": "Mes Amis", "contactCount": 0, "description": "Contient tous mes amis", "createdAt": "2018-05-22T13:39:01.602+02:00", "updatedAt": "2018-05-22T13:39:01.602+02:00" }
- Status code : 201 Created
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste de diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | NameNotAvailable | Le nom de la liste de diffusion n'est pas disponible |
- Supprimer une liste de diffusion
:id-group
/mailing-lists/:id-mailing-list
Ce point d'accès permet de supprimer une liste de diffusion.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion. |
Format de réponse
- Status code : 204 No Content
- Payload : N/A
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste de diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les listes de diffusion
:id-group
/mailing-lists
Ce point d'accès permet de récupérer la liste paginée des listes de diffusion d'un groupe donné.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "content": [{ "id": "8c76c1e0-cc65-4e01-be62-395b2f2da2f5", "name": "liste N2", "contactCount": 12, "description": "description de la liste", "createdAt": "2018-04-27T16:24:10.622+02:00", "updatedAt": "2018-04-27T16:24:10.622+02:00" }, { "id": "bfb7fb90-9c01-4063-a83d-e1ea2c283482", "name": "liste n1", "contactCount": 0, "description": "Lorem ipsum", "createdAt": "2018-04-27T16:23:52.101+02:00", "updatedAt": "2018-04-27T16:23:52.101+02:00" }], "totalPages": 1, "last": true, "totalElements": 2, "sort": [{ "direction": "ASC", "property": "name", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }], "size": 10, "number": 0, "numberOfElements": 2, "first": true }
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Récupérer une liste de diffusion
:id-group
/mailing-lists/:id-mailing-list
Ce point d'accès permet de récupérer une liste de diffusion.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion. |
Format de réponse
Format de réponse
{ "id": "bfb7fb90-9c01-4063-a83d-e1ea2c283482", "name": "liste n1", "contactCount": 5, "description": "Lorem ipsum", "createdAt": "2018-04-27T16:23:52.101+02:00", "updatedAt": "2018-04-27T16:23:52.101+02:00" }
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste de diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Ajouter des contacts
:id-group
/mailing-lists/:id-mailing-list
/contacts
Ce point d'accès permet de rajouter des contacts à une liste de diffusion.
Format de requête
Format de requête
curl -X PUT \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id1&ids=id2"\
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id1&ids=id2");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=[id_contact_1]&ids=[id_contact_2]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion. |
ids |
[]String | Les identifiants des contacts à ajouter. |
Format de réponse
- Status code : 200 OK
- Payload : N/A
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste du diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Récupérer les contact
:id-group
/mailing-lists/:id-mailing-list
/contacts
Ce point d'accès permet de récupérer la liste paginée des contacts d'une liste de diffusion.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe. |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion. |
Format de réponse
Format de réponse
{ "content": [{ "id": "a3884338-b6c5-4253-a6ec-57e675ac136f", "name": "Charles", "firstName": "Célia", "address": "514 rue Boulevard des Panoramas", "city": "Portview", "countryCode": "FRA", "postalCode": "76779", "landlineTwo": "+33131471185", "cellularOne": "+33699831343", "email": "etthomas.aubert@hotmail.fr", "createdAt": "2018-04-26T11:41:05.678+02:00", "updatedAt": "2018-04-26T11:41:05.678+02:00" }, { "id": "2dc83b7a-301a-4e0e-97f5-c1496c3d8219", "name": "Dupuy", "firstName": "Alexis", "address": "702 rue Boulevard Royale", "city": "Northberg", "countryCode": "FRA", "postalCode": "71946", "landlineOne": "+33111749422", "cellularOne": "+33790949718", "email": "utmatteo.leroux@hotmail.fr", "createdAt": "2018-04-26T11:41:06.078+02:00", "updatedAt": "2018-04-26T11:41:06.078+02:00" }, ... ], "totalPages": 1, "last": true, "totalElements": 6, "sort": [{ "direction": "ASC", "property": "name", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }, { "direction": "ASC", "property": "firstName", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }, { "direction": "ASC", "property": "id", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }], "size": 10, "number": 0, "numberOfElements": 6, "first": true }
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste du diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Détacher plusieurs contacts
:id-group
/mailing-lists/:id-mailing-list
/contacts
Ce point d'accès permet de retirer des contacts d'une liste de diffusion.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id1&ids=id2"\
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=[id_contact_1]&ids=[id_contact_2]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=[id_contact_1]&ids=[id_contact_2]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=[id_contact_1]&ids=[id_contact_2]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe |
id-mailing-list |
String | L'identifiant unique de la liste de diffusion |
ids |
[]String | Les identifiants des contacts à retirer |
Format de réponse
- Status code : 200 OK
- Payload : N/A
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la liste du diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NameNotAvailable | Le nom de la liste de diffusion n'est pas disponible |
5. Gérer ses catégories de diffusions
Une catégorie de diffusion est une catégorie associable à une diffusion
C'est une structure qui permet de catégoriser les diffusions, notamment dans un but de filtrage lors d'une recherche.
Structure d'une catégorie de diffusion
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la catégorie |
label | String | false | Le nom de la catégorie |
created-at | Date | true | Date de création de la catégorie |
updated-at | Date | true | Date de dernière modification de la catégorie |
- Lister les catégories de diffusion
:id-group
/categories
Ce point d'accès permet de lister toute les catégories d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/categories", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/categories", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
{ [ { "id":"f12edd46-96b8-41d9-baa7-58f42daa9301", "label": "catégorie 1", "created-at": "2017-04-26T23:59:59.999Z", "updated-at": "2017-04-26T23:59:59.999Z" }, { "id":"54032d6f-19cd-4049-8cfe-bd80a563c911", "label": "catégorie 2", "created-at": "2017-04-26T23:59:59.999Z", "updated-at": "2017-04-26T23:59:59.999Z" }, {...}, { "id":"372c1ede-03d5-41d4-bd2c-0471a3c371be", "label": "catégorie 3", "created-at": "2017-04-26T23:59:59.999Z", "updated-at": "2017-04-26T23:59:59.999Z" } ] }
- Status code : 200 Ok
- Response Body : Renvoie une liste d'objets catégorie
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Créer une catégorie de diffusion
:id-group
/categories
Ce point d'accès permet de créer une catégorie de diffusion.
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '{
"label": "Ma catégorie"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"label\": \"Ma catégorie\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/categories", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\"label\": \"Ma catégorie\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/categories", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
request.AddParameter("application/json", "{""label"": ""Ma catégorie""}", ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{"label": "Ma catégorie"}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories"
payload := strings.NewReader("{\"label\": \"Ma catégorie\"}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe |
- Payload
Champ | Type | Description |
---|---|---|
label | String | Le nom de la catégorie de diffusion |
Format de réponse
Format de réponse
{ "id": "cd8e85d5-a96a-49b5-99dd-d465a76f6df4", "label": "Ma catégorie", "createdAt": "2018-05-22T18:08:36.875+02:00", "updatedAt": "2018-05-22T18:08:36.875+02:00" }
- Status code : 201 Created
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | CategoryAlreadyExists | Ce nom de catégorie n'est pas disponible |
- Modifier une catégorie de diffusion
:id-group
/categories/:id-categorie
Ce point d'accès permet de modifier une catégorie de diffusion dans un groupe donné.
le label est obligatoire.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id_category]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"label":"Ma catégorie modifiée"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id_category]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"label\":\"Ma catégorie modifiée\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/categories/[id_category]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\"label\":\"Ma catégorie modifiée\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts/[id_contact]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
request.AddParameter("application/json", "{""label"":""Ma catégorie modifiée""}", ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id_category]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{"label": "Ma catégorie modifiée"}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id_category]"
payload := strings.NewReader("{\"label\":\"Ma catégorie modifiée\"}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-categorie | String | L'identifiant unique de la catégorie. |
- Payload
N/A
Format de réponse
Format de réponse
{ "id": "cd8e85d5-a96a-49b5-99dd-d465a76f6df4", "label": "Ma catégorie modifiée", "createdAt": "2018-05-22T18:08:36.875+02:00", "updatedAt": "2018-05-22T18:10:03.941+02:00" }
- Status code : 200 OK
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /categories/:id-categorie |
Emplacement de la catégorie modifiée |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la catégorie à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | CategoryAlreadyExists | Ce nom de catégorie n'est pas disponible |
- Supprimer une catégorie de diffusion
:id-group
/categories/:id-categorie
Ce point d'accès permet de supprimer une catégorie de diffusion d'un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id-categorie]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id-categorie]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/categories/[id-categorie]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/categories/[id-categorie]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id-categorie]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/categories/[id-categorie]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-categorie | String | L'identifiant unique de la catégorie. |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la catégorie à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
6. Déclencher une diffusion
Une diffusion est un envoi d'un ou plusieurs messages vers des contacts, des listes de diffusion ou directement des adresses (mobile, fixe, email...).
Une diffusion est identifiée par la ressource DiffusionRequest
, qui définit le contenu du message par média ainsi que les coordonnées des destinataires, identifiants de contacts, ou liste de diffusion.
Une diffusion peut être émise sur n'importe quelle combinaison des médias SMS
, EMAIL
, VOICE
, FAX
(sous réserve de souscription aux médias).
Pour émettre une diffusion simple vers un SMS
, les champs msisdns
et smsParam
doivent être renseignés.
Pour émettre une diffusion simple vers un EMAIL
, les champs emails
et emailParam
doivent être renseignés.
Pour émettre une diffusion simple vocale, les champs msisdns
, landlines
et voiceParam
doivent être renseignés.
Pour émettre une diffusion simple fax, le champ faxes
et la partie faxParam
doivent être renseignés.
Pour émettre une diffusion programmée, le champ scheduledDate
doit être renseigné
La stratégie d'envoi, à savoir la gestion des retentatives sur les points de communication des contacts en cas d'échec, peut être paramétrée dans l'application Contact-Everyone.
A SAVOIR
- Seuls les numéros émetteurs personnalisés qui vous sont attribués sont utilisables dans l'API (champ
smsParam.senderName
) - Seuls les emails émetteurs personnalisés qui vous sont attribués sont utilisables dans l'API (champ
emailParam.senderEmail
) - Dans le cas d'une diffusion vocale, les champs
msisdns
etlandlines
sont indicatifs. Un numéro de mobile renseigné dans leslandlines
sera facturé en tant que mobile, et un numéro fixe renseigné dans lesmsisdns
sera facturé en tant que fixe.
Pour vous familiariser avec l'API, il est conseillé de commencer par le quick start guide
Structure d'une diffusion
- Objet Diffusion
Champ | Type | Requis | Description |
---|---|---|---|
id | String | false | L'identifiant unique de la diffusion. |
name | String | false | Le nom de la diffusion |
msisdns | []String | false | La liste des numéros de téléphone portable |
additionalMsisdns | []String | false | La liste additionnelle de numéros de téléphone portable si utilisation d'un modèle de diffusion |
landlines | []String | false | La liste des numéros de téléphone fixe |
additionalLandlines | []String | false | La liste additionnelle de numéros de téléphone fixe si utilisation d'un modèle de diffusion |
emails | []String | false | La liste des adresses email |
additionalEmails | []String | false | La liste additionnelle d'adresses email si utilisation d'un modèle de diffusion |
faxes | []String | false | La liste des numéros de fax |
additionalFaxes | []String | false | La liste additionnelle des numéros de fax si utilisation d'un modèle de diffusion |
contactIds | []String | false | Les identifiants de contacts |
additionalContactIds | []String | false | Les identifiants additionnels de contacts si utilisation d'un modèle de diffusion |
mailingListIds | []String | false | Les identifiants de liste de diffusion |
additionalMailingListIds | []String | false | Les identifiants additionnels de liste de diffusion si utilisation d'un modèle de diffusion |
excludedContactIds | []String | false | Les identifiants des contacts exclus |
additionalExcludedContactIds | []String | false | Les identifiants additionnels des contacts exclus si utilisation d'un modèle de diffusion |
categoryIds | []String | false | Les identifiants des catégories incluses |
smsParam | SmsParam | false | Paramètres de l'envoi SMS |
emailParam | EmailParam | false | Paramètres de l'envoi email |
faxParam | FaxParam | false | Paramètres de l'envoi fax |
voiceParam | VoiceParam | false | Paramètres de l'envoi vocal |
mailingRecipients | []Recipient | false | Les destinataires du publipostage |
mailingFields | []String | false | La liste des champs de publipostage |
strategyId | String | false | L'identifiant de la strategie |
strategy | Strategie | false | Une strategie à la volée |
createdAt | Date | N/A (read only) | Date de création |
updatedAt | Date | N/A (read only) | Date de dernière modification |
scheduledDate | Date | false | Date d'envoi programmée |
diffusionTemplateId | String | false | L'identifiant d'un modèle de diffusion |
customIds | Map{String,String} | false | Un ensemble de clé :valeur où clé est un destinataire et valeur est son identifiant personnalisé "destinataire" doit être soit un numéro de téléphone présent dans msisdns , landlines ou faxes , soit une adresse mail présente dans emails |
Objet Recipient
Champ | Type | Requis | Description |
---|---|---|---|
mobile | String | false | Le numéro de mobile du destinataire |
mobile2 | String | false | Le second numéro de mobile du destinataire |
String | false | L'adresse email du destinataire | |
fields | Objet JSON | true | Table de hachage contenant les variables |
customId | String | false | L'identifiant personnalisé associé au destinataire dans cette diffusion |
Utilisation de modèle de diffusion
Il est possible d'utiliser un modèle de diffusion créé auparavant en renseignant le champ diffusionTemplateId
.
Dans ce cas, les données du modèle de diffusion seront utilisées pour créer la demande de diffusion. Attention, les champs non nuls présents dans la demande de diffusion écraseront ceux du modèle de diffusion. Il est ainsi par exemple possible d'utiliser un modèle de diffusion, mais de préciser une stratégie différente ou une liste différente de fichiers attachés dans emailParam, etc.
La demande de diffusion est alors créée, mais ne conserve pas de lien vers le modèle de diffusion. Ceci est important dans le cas d'une demande de diffusion programée : la modification/suppression du modèle de diffusion n'a aucun impact sur la demande de diffusion elle-même.
Si vous souhaitez conserver les contacts, excludedContacts, msisdns, emails, faxes, landlines, mailingLists présents dans le modèle de diffusion et que vous souhaitez en ajouter d'autres, vous pouvez utiliser les listes additionnelles dans ce cas.
Exemple :
- Si vous renseignez des identifiants de contact dans le champ
contactIds
, ceux-ci seront utilisés à la place de ceux du modèle de diffusion. - Si vous renseignez des identifiants de contact dans le champ
additionnalContactIds
, ceux-ci seront utilisés en plus de ceux du modèle de diffusion.
Utilisation de message prédéfini
Il est possible d'utiliser un message prédéfini en utilisant le champ templateId
dans les objets SmsParam, EmailParam, FaxParam et VoiceParam.
Attention, les champs non nuls des objets xxxParam de la diffusion écraseront les valeurs issues du message prédéfini (il est ainsi possible de n'utiliser qu'une partie d'un message prédéfini).
La demande de diffusion est alors créée avec les valeurs du message prédéfini, mais ne conserve pas de lien vers celui-ci. Le message prédéfini peut donc être modifié ou supprimé sans impact sur la diffusion.
Utilisation de modèle de diffusion ET de message prédéfini
Il est bien sûr possible d'utiliser à la fois un modèle de diffusion et des messages prédéfinis lors d'une demande de diffusion. Tout comme dans l'IHM vous choisiriez un modèle de diffusion puis selectionneriez peut être un message prédéfini afin enfin de modifier manuellement quelques champs de votre diffusion, l'ordre de chargement des données dans l'API est le suivant:
- La diffusion est préparée avec les valeurs du modèle de diffusion
- Les champs non nuls du ou des message(s) prédéfini(s) écrasent ceux du modèle de diffusion
- Les champs non nuls de la demande de diffusion elle-même viennent à leur tour écraser les valeurs présentes
Stratégie
Si elle n'est pas renseignée, c'est la stratégie par défaut qui sera appliquée sur la diffusion.
Si elle n'est pas renseignée et que vous avez renseigné un modèle de diffusion qui a une stratégie, c'est cette dernière qui sera utilisée.
Pour renseigner une stratégie, 2 possibilités :
- renseigner le champ
strategyId
avec l'identifiant d'une stratégie existante - renseigner le champ
strategy
avec une stratégie "à la volée", donc unique pour cette diffusion
- Créer une diffusion SMS
:id-group
/diffusion-requests
Ce point d'accès permet de créer une diffusion dans un groupe donné.
Le contenu spécifique aux sms est spécifié dans le champ SmsParam.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"msisdns":["0600000000"],
"smsParam":{
"encoding":"GSM7",
"body":"mon contenu SMS"
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"+
"\"name\":\"mon nom de diffusion\","+
"\"contactIds\":[id_contact_1, id_contact_2, ...],"+
"\"mailingListIds\":[id_mailing_list_1,id_mailing_list_2, ...],"+
"\"msisdns\":[\"0600000000\"],"+
"\"smsParam\":{\"encoding\":\"GSM7\", \"body\":\"mon contenu SMS\"}}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""msisdns"":[""0600000000""],
""smsParam"":{
""encoding"":""GSM7"",
""body"":""mon contenu SMS""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""msisdns"":[""0600000000""],
""smsParam"":{
""encoding"":""GSM7"",
""body"":""mon contenu SMS""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"msisdns":["0600000000"],
"smsParam":{
"encoding":"GSM7",
"body":"mon contenu SMS"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"msisdns":["0600000000"],
"smsParam":{
"encoding": "GSM7",
"body": "mon contenu SMS"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "4a0c8b08-cc7e-4cee-a6a5-2407c9cba5d4", "name": "mon nom de diffusion", "msisdns": ["+33699832919"], "emails": [], "contactIds": [], "mailingListIds": ["81eb68cb-051b-4e9a-9ac2-aa774583f0f4"], "excludedContactIds": [], "smsParam": { "encoding": "GSM7", "body": "mon contenu SMS", "estimatedMsgCount": 1 }, "createdAt": "2018-04-27T16:50:42.625+02:00", "updatedAt": "2018-04-27T16:50:42.625+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | MissingEnrichedSmsOption | Le champ LandingPageParam a été renseigné alors que vous n'avez pas l'option SMS enrichi activée |
400 BadRequest | MissingEnrichedSmsPlaceholder | Le champ LandingPageParam a été renseigné alors que le texte !!CEO_URL_LANDING_PAGE!! n'est pas présent dans le corps du message |
400 BadRequest | UnknownEnrichedSmsField | La map LandingPageParam.fields contient une ou plusieurs clés/valeurs non valides |
Remplacement de votre lien par un lien court
Pour utiliser cette fonctionnalité, il faut d'abord renseigner le champ urlToShorten
dans le SmsParam.
Ensuite il sera possible d’insérer dans le corps du message un texte !!CEO_URL_RACCOURCIE!!
qui, lors de l'envoi aux destinataires, sera remplacé par une URL du format https://ce1.io/ABCDEFG
(22 caractères). Cette URL:
- Redirige vers le lien saisi dans
urlToShorten
- Est unique pour chaque point de communication de chaque destinataire de votre diffusion. Cela permet de mettre en place le suivi/tracking de l'ouverture du lien pour chaque envoi.
Par exemple, on a le SmsParam suivant:
"smsParam":{
"encoding":"GSM7",
"body":"Voici le lien court: !!CEO_URL_RACCOURCIE!!",
"urlToShorten":"https://www.google.com?q=Contact+Everyone+Orange"
}
Avec ce smsParam
, si vous créez une diffusion destinée à deux contacts: M. Dupont qui a deux numéros de téléphone 06 00 00 00 01 et 06 00 00 00 02 et M. Martin qui en a un seul 07 00 00 00 01, les messages qu'ils recevront seront les suivants:
Numéro cible | Message reçu |
---|---|
06 00 00 00 01 (Dupont) | Voici le lien court: https://ce1.io/ORANGE1 |
06 00 00 00 02 (Dupont) | Voici le lien court: https://ce1.io/ORANGE2 |
07 00 00 00 01 (Martin) | Voici le lien court: https://ce1.io/ORANGE3 |
Quand le destinataire consulte le lien reçu, il sera redirigé vers https://www.google.com?q=Contact+Everyone+Orange
.
Note: ORANGE1
, ORANGE2
et ORANGE3
sont à titre exemple. En réalité ces identifiants sont générés de manière quasi-aléatoire et ne sont pas énumérables.
Génération d'une page de destination (landing page)
Pour utiliser cette fonctionnalité, il faut renseigner le champ landingPageParam
dans le SmsParam.
Ensuite il sera possible d'insérer dans le corps du message un texte !!CEO_URL_LANDING_PAGE!!
qui, lors de l'envoi aux destinataires, sera remplacé par une URL du format https://rsms.co/ABCDEFGH
(24 caractères). Cette URL est unique pour chaque point de communication de chaque destinataire et redirige vers une landing page hébergée chez notre partenaire Sinch for marketing
Par exemple, avec le SmsParam suivant:
"smsParam":{
"encoding":"GSM7",
"body":"Voici la landing page: !!CEO_URL_LANDING_PAGE!!",
"landingPageParam": {
"landingPageId": "891deb35-6450-4f16-89cc-e1dc58f560fc"
}
}
si vous créez une diffusion destinée à deux contacts: M. Dupont qui a deux numéros de téléphone 06 00 00 00 01 et 06 00 00 00 02 et M. Martin qui en a un seul 07 00 00 00 01, les messages qu'ils recevront seront les suivants:
Numéro cible | Message reçu |
---|---|
06 00 00 00 01 (Dupont) | Voici la landing page: https://rsms.co/aaa00001 |
06 00 00 00 02 (Dupont) | Voici la landing page: https://rsms.co/aaa00002 |
07 00 00 00 01 (Martin) | Voici la landing page: https://rsms.co/aaa00003 |
Note: Les identifiants aaa00001
, aaa00002
et aaa00003
sont à titre exemple.
- Créer une diffusion email
:id-group
/diffusion-requests
Ce point d'accès permet de créer une diffusion dans un groupe donné.
Le contenu spécifique aux emails est spécifié dans le champ EmailParam.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"emails":["johndoe@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail"
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"+
"\"name\":\"mon nom de diffusion\"," +
"\"contactIds\":[id_contact_1, id_contact_2, ...]," +
"\"mailingListIds\":[id_mailing_list_1,id_mailing_list_2, ...]," +
"\"excludedContactIds\":[]," +
"\"emails\":[\"johndoe@domain.com\"]," +
"\"emailParam\":{" +
"\"senderEmail\":\"johnthesender@domain.com\"," +
"\"senderName\": \"John the sender\"," +
"\"body\": \"mon contenu email HTML\"," +
"\"subject\":\"Mon objet de mail\"" +
"}}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""emails"":[""johndoe@domain.com""],
""emailParam"":{
""senderEmail"":""johnthesender@domain.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""emails"":[""johndoe@domain.com""],
""emailParam"":{
""senderEmail"":""johnthesender@domain.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"emails":["johndoe@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"emails":"johndoe@domain.com",
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"subject": "Mon objet de mail",
"body": "mon contenu SMS"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "5802fc7f-1232-4738-b98c-d431e7d44c7e", "name": "mon nom de diffusion", "msisdns": [], "emails": ["johndoe@domain.com"], "contactIds": [], "mailingListIds": [], "excludedContactIds": [], "categoryIds": [], "emailParam": { "senderName": "John the sender", "senderEmail": "axel.leroy@hotmail.fr", "subject": "Mon objet de mail", "body": "mon contenu email HTML" }, "createdAt": "2018-05-22T17:06:29.971+02:00", "updatedAt": "2018-05-22T17:06:29.971+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
- Lien de consultation en ligne
Il est possible d’insérer dans le body un lien d’ouverture de l'email en ligne. Le destinataire aura alors la possibilité d’ouvrir le contenu de l'email sur son navigateur internet en cas de problème de lecture :
<a href="~VIEW_ONLINE~">consulter en ligne</a>
Le contenu de la balise <a href="~VIEW_ONLINE~">
(ici "consulter en ligne") est bien sûr libre.
- Lien de désinscription
Il est aussi possible d'insérer dans le body un lien de désinscription :
- En français :
<a href="~URL_STOP_FR~">désinscription</a>
- En anglais :
<a href="~URL_STOP_EN~">unsubscribe</a>
Le contenu de la balise <a>
(ici "désinscription") est bien sûr libre.
La langue (FR ou EN) permet d'orienter l'utilisateur vers la page de confirmation traduite dans la langue choisie lorsqu'il clique sur le lien.
En cas de « suivi des liens » selectionné dans la stratégie, les clics effectués sur ce lien feront l’objet d’un suivi/tracking dans le bilan des envois.
Par ailleurs, l’ensemble des désinscriptions est accessible via API (cf Coordonées désinscrites).
- Créer une diffusion email avec pièces jointes
:id-group
/diffusion-requests
Une diffusion email peut comporter jusqu'à 5 pièces jointes (chacune avec un poids de 10Mo max et pour un poids total maximum de 10Mo).
Format de requête
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Il y a deux façon de rajouter des pieces jointes :
1. Avec téléversement
Format de requête - Avec téléversement
curl -X POST "http://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name":"diffusion par fichier joint",
"emails":["johndoe@domain.com", "jason.moriz@domain.com", "lisa.money@domain.com"],
"emailParam":{
"senderName": "Patrick",
"senderEmail": "adam.royer@domain.com",
"subject": "Réunion de cet après-midi annulée",
"body": "Hello world",
"attachmentIds": [
"3a0a16d9-4fd6-4a88-a151-9698802dc734",
"81a95029-0d8c-4c1f-86da-68d0c5454730"
]
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData= "{" +
" \"name\":\"diffusion par fichier joint\"," +
" \"emails\":[\"johndoe@domain.com\", \"jason.moriz@domain.com\", \"lisa.money@domain.com\"]," +
" \"emailParam\":{" +
" \"senderName\": \"Patrick\"," +
" \"senderEmail\": \"adam.royer@domain.com\"," +
" \"subject\": \"Réunion de cet après-midi annulée\"," +
" \"body\": \"Hello world\"," +
" \"attachmentIds\": [" +
" \"3a0a16d9-4fd6-4a88-a151-9698802dc734\"," +
" \"81a95029-0d8c-4c1f-86da-68d0c5454730\"" +
" ]" +
" }" +
" }";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""diffusion par fichier joint"",
""emails"":[""johndoe@domain.com"", ""jason.moriz@domain.com"", ""lisa.money@domain.com""],
""emailParam"": {
""senderName"": ""Patrick"",
""senderEmail"": ""adam.royer@domain.com"",
""subject"": ""Réunion de cet après-midi annulée"",
""body"": ""Hello world"",
""attachmentIds"": [
""3a0a16d9-4fd6-4a88-a151-9698802dc734"",
""81a95029-0d8c-4c1f-86da-68d0c5454730""
]
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""diffusion par fichier joint"",
""emails"":[""johndoe@domain.com"", ""jason.moriz@domain.com"", ""lisa.money@domain.com""],
""emailParam"": {
""senderName"": ""Patrick"",
""senderEmail"": ""adam.royer@domain.com"",
""subject"": ""Réunion de cet après-midi annulée"",
""body"": ""Hello world"",
""attachmentIds"": [
""3a0a16d9-4fd6-4a88-a151-9698802dc734"",
""81a95029-0d8c-4c1f-86da-68d0c5454730""
]
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"diffusion par fichier joint",
"emails":["johndoe@domain.com", "jason.moriz@domain.com", "lisa.money@domain.com"],
"emailParam":{
"senderName": "Patrick",
"senderEmail": "adam.royer@domain.com",
"subject": "Réunion de cet après-midi annulée",
"body": "Hello world",
"attachmentIds": [
"3a0a16d9-4fd6-4a88-a151-9698802dc734",
"81a95029-0d8c-4c1f-86da-68d0c5454730"
]
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name":"diffusion par fichier joint",
"emails":["johndoe@domain.com", "jason.moriz@domain.com", "lisa.money@domain.com"],
"emailParam":{
"senderName": "Patrick",
"senderEmail": "adam.royer@domain.com",
"subject": "Réunion de cet après-midi annulée",
"body": "Hello world",
"attachmentIds": [
"3a0a16d9-4fd6-4a88-a151-9698802dc734",
"81a95029-0d8c-4c1f-86da-68d0c5454730"
]
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Il faut téléverser les fichiers (cf Envoyer un fichier ) que l'on souhaite envoyer dans un premier temps, puis faire une requête d'envoi de mail contenant les identifiants des fichiers.
La requête doit être une requête au format application/json
Le contenu spécifique au mail et les identifiants des fichiers téléversés sont spécifiés dans le champ EmailParam.
2. En multipart
Format de requête - En multipart
1° solution:
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H 'Authorization: Bearer [Access-Token]' \
-H 'Content-Type: multipart/form-data; boundary=efcaa4b6-a261-19be-4d49-4b7262bf039a' \
-d $'--efcaa4b6-a261-19be-4d49-4b7262bf039a\r
Content-Type: application/json\r
Content-Disposition: form-data; name="diffusion"\r
\r
{
"name":"Message interne - 07/03/2017",
"emails":["johndoe@domain.com", "jason.moriz@domain.com", "lisa.money@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "Patrick",
"subject":"Réunion de cet après-midi annulée",
"body":"Hello world"
}
}
\r
--efcaa4b6-a261-19be-4d49-4b7262bf039a\r
Content-Disposition: form-data; name="attachment1"; filename="filename.txt"\r
Content-Type: plain/text\r
\r
Content of a txt file. \r
--efcaa4b6-a261-19be-4d49-4b7262bf039a--\r
'
2° solution
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H 'Authorization: Bearer [Access-Token]' \
-H 'Content-Type: multipart/form-data' \
-F attachment1=@/path/to/monImage.jpg \
-F attachment2=@/path/to/monFicher.txt \
-F 'diffusion={
"name":"Message interne - 07/03/2017",
"emails":["johndoe@domain.com", "jason.moriz@domain.com", "lisa.money@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "Patrick",
"subject":"Réunion de cet après-midi annulée",
"body":"Hello world"
}
};type=application/json'
var client = new RestClient("https://[SERVER_URL]/api/v1.2")
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
var json = @"{
""name"":""test Diff API"",
""emails"":[""johndoe@domain.com""],
""emailParam"":{
"senderEmail":"johnthesender@domain.com",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}";
request.AddParameter("diffusion", json, "application/json", ParameterType.RequestBody);
request.AddFile("attachment1", @"c:\myFirstFile.jpg", "image/jpg");
request.AddFile("attachment2", @"c:\mySecondFile.txt", "plain/text");
IRestResponse r = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim json = "{
""name"":""test Diff API"",
""emails"":[""johndoe@domain.com""],
""emailParam"":{
"senderEmail":"johnthesender@domain.com",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}"
request.AddParameter("diffusion", json, "application/json", ParameterType.RequestBody)
request.AddFile("attachment1", "c:\myFirstFile.jpg", "image/jpg")
request.AddFile("attachment2", "c:\mySecondFile.txt", "plain/text")
Dim r as IRestResponse = client.Execute(request)
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("content-Type", "multipart/form-data; boundary=efcaa4b6-a261-19be-4d49-4b7262bf039a");
con.setDoOutput(true);
String content = "--efcaa4b6-a261-19be-4d49-4b7262bf039a\r\n" +
"Content-Type: application/json\r\n" +
"Content-Disposition: form-data; name=\"diffusion\"\r\n\r\n" +
"{" +
" \"name\":\"Message interne - 07/03/2017\", " +
" \"emails\":[\"johndoe@domain.com\", \"jason.moriz@domain.com\", \"lisa.money@domain.com\"], " +
" \"emailParam\":{ " +
" \"senderEmail\":\"johnthesender@domain.com\", " +
" \"senderName\": \"Patrick\", " +
" \"subject\":\"Réunion de cet après-midi annulée\", " +
" \"body\":\"Hello world\" " +
" } " +
" } " +
"\r\n--efcaa4b6-a261-19be-4d49-4b7262bf039a\r\n" +
"Content-Disposition: form-data; name=\"attachment1\"; filename=\"filename.pdf\"\r\n" +
"Content-Type: application/pdf\r\n\r\n";
byte[] pdfContentAsBytes = Files.readAllBytes(Paths.get("/path/to/file.pdf"));
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(content.getBytes(StandardCharsets.UTF_8));
dataOutputStream.write(pdfContentAsBytes);
dataOutputStream.write("\r\n--efcaa4b6-a261-19be-4d49-4b7262bf039a--\r\n".getBytes(StandardCharsets.UTF_8))
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"os"
"bytes"
"io"
"mime/multipart"
"io/ioutil"
"fmt"
"net/http"
"net/textproto"
)
func main() {
// Prepare a form that you will submit
var b bytes.Buffer
w := multipart.NewWriter(&b)
// Add your attachments
err := addFilePart(w, "attachment1", "filename1.jpg", "/path/to/file1")
if err != nil {
return
}
err = addFilePart(w, "attachment2", "filename2.jpg", "/path/to/file2")
if err != nil {
return
}
// Add the diffusion json part
json := `{
"name":"test Diff API",
"emails":["johndoe@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail"
}
}`
h := make(textproto.MIMEHeader)
h.Set("Content-Disposition", `form-data; name="diffusion"`)
h.Set("Content-Type", "application/json")
dw, err := w.CreatePart(h)
if _, err = dw.Write([]byte(json)); err != nil {
return
}
// Don't forget to close the multipart writer.
// If you don't close it, your request will be missing the terminating boundary.
w.Close()
// Now that you have a form, you can submit it to your handler.
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
req, err := http.NewRequest("POST", url, &b)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Set("Content-Type", w.FormDataContentType())
if err != nil {
return
}
// Submit the request
client := &http.Client{}
res, err := client.Do(req)
if err != nil {
return
}
// Check the response
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
func addFilePart(w *multipart.Writer, partName, filename, file string) error {
f, err := os.Open(file)
if err != nil {
return err
}
defer f.Close()
fw, err := w.CreateFormFile(partName, filename)
if err != nil {
return err
}
if _, err = io.Copy(fw, f); err != nil {
return err
}
return nil
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: multipart/form-data; boundary=efcaa4b6-a261-19be-4d49-4b7262bf039a'
));
$content = "--efcaa4b6-a261-19be-4d49-4b7262bf039a\r
Content-Type: application/json\r
Content-Disposition: form-data; name=\"diffusion\"\r
\r
{
\"name\":\"Message interne - 07/03/2017\",
\"emails\":[\"johndoe@domain.com\", \"jason.moriz@domain.com\", \"lisa.money@domain.com\"],
\"emailParam\":{
\"senderEmail\":\"johnthesender@domain.com\",
\"senderName\": \"Patrick\",
\"subject\":\"Réunion de cet après-midi annulée\",
\"body\":\"Hello world\"
}
}\r
--efcaa4b6-a261-19be-4d49-4b7262bf039a\r
Content-Disposition: form-data; name=\"attachment1\"; filename=\"filename.txt\"\r
Content-Type: plain/text\r
\r
Content of a txt file. \r
--efcaa4b6-a261-19be-4d49-4b7262bf039a--\r
";
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($head);
?>
La requête doit être une requête au format multipart/form-data
avec comme parties :
partie
diffusion
(requis) : définition de la diffusion au formatapplication/json
,partie
attachment1
: pièce jointe #1,partie
attachment2
: pièce jointe #2,partie
attachment3
: pièce jointe #3,partie
attachment4
: pièce jointe #4,partie
attachment5
: pièce jointe #5.
Format de réponse
Format de réponse
{ "id": "2e8a094f-edab-4a76-a2c5-1626752b430c", "name": "Message interne - 07/03/2017", "msisdns": [], "emails": ["johndoe@domain.com", "lisa.money@domain.com", "jason.moriz@domain.com"], "contactIds": [], "mailingListIds": [], "excludedContactIds": [], "emailParam": { "senderName": "Patrick", "senderEmail": "adam.royer@domain.com", "subject": "Réunion de cet après-midi annulée", "body": "Hello world" }, "createdAt": "2018-05-22T17:39:45.290+02:00", "updatedAt": "2018-05-22T17:39:45.290+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | MaxFileSizeExceeded | Le poids total maximum des pièces jointes ne doit pas dépasser 10Mo. |
- Créer une diffusion email multi-destinataires
:id-group
/multemail-diffusion-requests
Ce point d'accès permet de créer une diffusion Email à destinataires multiples dans un groupe donné.
Une diffusion email à destinataires multiples peut comporter jusqu'à 5 pièces jointes (chacune avec un poids de 5Mo max et pour un poids total maximum de 5Mo).
Si on souhaite envoyer des pièces jointes, il faut téléverser les fichiers (cf Envoyer un fichier ) dans un premier temps, puis faire une requête d'envoi de mail contenant les identifiants des fichiers.
Le contenu spécifique aux emails et les identifiants des fichiers téléversés sont spécifiés dans le champ EmailParam.
Le contenu spécifique aux emails multi-destinataires est spécifié dans la collection multEmails. Seule la collection d'adresses to est obligatoire par multEmail. Les tentatives d'envoi vers les destinataires des collections cc ou bcc sont annulées si tous les destinataires de la collection d'adresses to sont injoignables.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/multemail-diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name": "mon nom de diffusion",
"multEmails": [
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": ["louis@domain.com","alan@domain.com"]
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": ["louis@domain.com","alan@domain.com"]
}
],
"emailParam": {
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail",
"attachmentIds": ["3a0a16d9-4fd6-4a88-a151-9698802dc734","81a95029-0d8c-4c1f-86da-68d0c5454730"]
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/multemail-diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"+
"\"name\": \"mon nom de diffusion\","+
"\"multEmails\": ["+
"{"+
"\"to\": [\"cathy@domain.com\",\"john@domain.com\",\"george@domain.com\"],"+
"\"cc\": [],"+
"\"bcc\": []"+
"},"+
"{"+
"\"to\": [\"cathy@domain.com\",\"john@domain.com\",\"george@domain.com\"],"+
"\"cc\": [\"julien@domain.com\",\"catherine@domain.com\"],"+
"\"bcc\": []"+
"},"+
"{"+
"\"to\": [\"cathy@domain.com\",\"john@domain.com\",\"george@domain.com\"],"+
"\"cc\": [],"+
"\"bcc\": [\"louis@domain.com\",\"alan@domain.com\"]"+
"},"+
"{"+
"\"to\": [\"cathy@domain.com\",\"john@domain.com\",\"george@domain.com\"],"+
"\"cc\": [\"julien@domain.com\",\"catherine@domain.com\"],"+
"\"bcc\": [\"louis@domain.com\",\"alan@domain.com\"]"+
"}"+
"],"+
"\"emailParam\": {"+
"\"senderEmail\":\"johnthesender@domain.com\","+
"\"senderName\": \"John the sender\","+
"\"body\": \"mon contenu email HTML\","+
"\"subject\":\"Mon objet de mail\","+
"\"attachmentIds\": [\"3a0a16d9-4fd6-4a88-a151-9698802dc734\",\"81a95029-0d8c-4c1f-86da-68d0c5454730\"]"+
"}"+
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""mon nom de diffusion"",
""multEmails"": [
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [],
""bcc"": []
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [""julien@domain.com"",""catherine@domain.com""],
""bcc"": []
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [],
""bcc"": [""louis@domain.com"",""alan@domain.com""]
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [""julien@domain.com"",""catherine@domain.com""],
""bcc"": [""louis@domain.com"",""alan@domain.com""]
}
],
""emailParam"": {
""senderEmail"":""johnthesender@domain.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail"",
""attachmentIds"": [""3a0a16d9-4fd6-4a88-a151-9698802dc734"",""81a95029-0d8c-4c1f-86da-68d0c5454730""]
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""mon nom de diffusion"",
""multEmails"": [
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [],
""bcc"": []
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [""julien@domain.com"",""catherine@domain.com""],
""bcc"": []
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [],
""bcc"": [""louis@domain.com"",""alan@domain.com""]
},
{
""to"": [""cathy@domain.com"",""john@domain.com"",""george@domain.com""],
""cc"": [""julien@domain.com"",""catherine@domain.com""],
""bcc"": [""louis@domain.com"",""alan@domain.com""]
}
],
""emailParam"": {
""senderEmail"":""johnthesender@domain.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail"",
""attachmentIds"": [""3a0a16d9-4fd6-4a88-a151-9698802dc734"",""81a95029-0d8c-4c1f-86da-68d0c5454730""]
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/multemail-diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "mon nom de diffusion",
"multEmails": [
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": ["louis@domain.com","alan@domain.com"]
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": ["louis@domain.com","alan@domain.com"]
}
],
"emailParam": {
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail",
"attachmentIds": ["3a0a16d9-4fd6-4a88-a151-9698802dc734","81a95029-0d8c-4c1f-86da-68d0c5454730"]
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/multemail-diffusion-requests"
json := ` {
"name": "mon nom de diffusion",
"multEmails": [
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": []
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": [],
"bcc": ["louis@domain.com","alan@domain.com"]
},
{
"to": ["cathy@domain.com","john@domain.com","george@domain.com"],
"cc": ["julien@domain.com","catherine@domain.com"],
"bcc": ["louis@domain.com","alan@domain.com"]
}
],
"emailParam": {
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail",
"attachmentIds": ["3a0a16d9-4fd6-4a88-a151-9698802dc734","81a95029-0d8c-4c1f-86da-68d0c5454730"]
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
Champ | Type | Requis | Description |
---|---|---|---|
name | String | false | Le nom de la diffusion |
multEmails | MultEmail | true | Les adresses email des destinataires |
emailParam | EmailParam | true | Paramètres de l'envoi email |
strategyId | String | false | L'identifiant de la strategie |
strategy | Strategie | false | Une strategie à la volée |
- Objet MultEmail
Champ | Type | Requis | Description |
---|---|---|---|
to | []String | true | Les adresses email des destinataires |
cc | []String | false | Les adresses email des destinataires en copie |
bcc | []String | false | Les adresses email des destinataires en copie cachés |
Format de réponse
Format de réponse
{ "id": "4622a874-94a2-461a-918a-9c4437f95bf5", "name": "mon nom de diffusion", "multEmails": [ { "to": ["cathy@domain.com","john@domain.com","george@domain.com"], "cc": [], "bcc": [] }, { "to": ["cathy@domain.com","john@domain.com","george@domain.com"], "cc": ["julien@domain.com","catherine@domain.com"], "bcc": [] }, { "to": ["cathy@domain.com","john@domain.com","george@domain.com"], "cc": [], "bcc": ["louis@domain.com","alan@domain.com"] }, { "to": ["cathy@domain.com","john@domain.com","george@domain.com"], "cc": ["julien@domain.com","catherine@domain.com"], "bcc": ["louis@domain.com","alan@domain.com"] } ], "emailParam": { "senderEmail":"johnthesender@domain.com", "senderName": "John the sender", "body": "mon contenu email HTML", "subject":"Mon objet de mail", "attachmentIds": ["3a0a16d9-4fd6-4a88-a151-9698802dc734","81a95029-0d8c-4c1f-86da-68d0c5454730"] } "createdAt": "2019-09-03T13:49:56.687+02:00", "updatedAt": "2019-09-03T13:49:56.687+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du groupe auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucune adresse Email n'a été fournie dans le champ "to". |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | DuplicateEmails | Des adresses sont en doublons entre les champs to/cc/bcc |
400 BadRequest | MaxFileSizeExceeded | Le poids total maximum des pièces jointes ne doit pas dépasser 5Mo. |
- Créer une diffusion fax
:id-group
/diffusion-requests
Ce endpoint permet de diffuser des fax dans un groupe donné.
Il faut téléverser les fichiers (cf Envoyer un fichier ) que l'on souhaite faxer dans un premier temps, puis faire une requête d'envoi de fax contenant les identifiants des fichiers.
Le contenu spécifique au fax (la page de garde) et les identifiants des fichiers téléversés sont spécifiés dans le champ FaxParam.
Une diffusion fax peut comporter jusqu'à 5 pièces (chacune avec un poids de 5Mo max et pour un poids total maximum de 5Mo).
L'ordre d'arrivée des documents sur le fax destinataire n'est pas garanti.
Les formats supportés sont les suivants : .pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .rtf, .txt, .html, .htm, .odt, .ods, .odp, .jpg, .jpeg, .png, .gif, .bmp
La page de garde est au format HTML et ne peut pas référencer des images externes.
Il est néanmoins possible d'inclure une image encodée en base64 dans le html :
<img src=”data:<MIMETYPE>;base64,<BASE64_ENCODED_IMAGE>”>
- Destinataires fax
Les numéros de fax peuvent être spécifiés via le champ faxes
de la diffusion.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name":"diffusion par fichier joint",
"faxes":["+33156341461"],
"faxParam": {
"attachmentIds": ["3e60f945-73f3-42d5-b304-350fd2586296"],
"headingHTML": "<h1>Ma page de garde en HTML</h1>"
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData ="{"+
"\"name\":\"diffusion par fichier joint\","+
"\"faxes\":[\"+33156341461\"],"+
"\"faxParam\": {"+
"\"attachmentIds\": [\"3e60f945-73f3-42d5-b304-350fd2586296\"],"+
"\"headingHTML\": \"<h1>Ma page de garde en HTML</h1>\""+
"}"+
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""diffusion par fichier joint"",
""faxes"":[""+33156341461""],
""faxParam"": {
""attachmentIds"": [""3e60f945-73f3-42d5-b304-350fd2586296""],
""headingHTML"": ""<h1>Ma page de garde en HTML</h1>""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""diffusion par fichier joint"",
""faxes"":[""+33156341461""],
""faxParam"": {
""attachmentIds"": [""3e60f945-73f3-42d5-b304-350fd2586296""],
""headingHTML"": ""<h1>Ma page de garde en HTML</h1>""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"diffusion par fichier joint",
"faxes":["+33156341461"],
"faxParam": {
"attachmentIds": ["3e60f945-73f3-42d5-b304-350fd2586296"],
"headingHTML": "<h1>Ma page de garde en HTML</h1>"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name":"diffusion par fichier joint",
"faxes":["+33156341461"],
"faxParam": {
"attachmentIds": ["3e60f945-73f3-42d5-b304-350fd2586296"],
"headingHTML": "<h1>Ma page de garde en HTML</h1>"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou numéro de fax n'a été défini sur votre diffusion |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le média de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un média |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | MaxFileSizeExceeded | Le poids total maximum des pièces jointes ne doit pas dépasser 5Mo. |
- Créer une diffusion vocale
:id-group
/diffusion-requests
Ce endpoint permet de diffuser des appels vocaux dans un groupe donné.
Le contenu spécifique aux appels vocaux est spécifié dans le champ VoiceParam.
- Contenu audio
Des contenus audio peuvent être utilisés à la place des contenus textes vocalisés intro
, body
et outro
.
La requête doit être une requête au format multipart/form-data
avec comme parties :
partie
diffusion
(requis) : définition de la diffusion au formatapplication/json
,partie
audio-intro
: fichier audio utilisé pour l'introduction du message,partie
audio-body
: fichier audio utilisé pour le contenu du message,partie
audio-outro
: fichier audio utilisé pour la conclusion du message.
Les types de contenu audio supportés sont les suivants:
Description | MIME | Extension |
---|---|---|
WAV (RIFF header) 8kHz 8-bit mono μ-law single channel | audio/x-wav | .wav |
WAV (RIFF header) 8kHz 8-bit mono A-law single channel | audio/x-wav | .wav |
WAV (RIFF header) 8kHz 8-bit mono Pulse Code Modulation (PCM) | audio/x-wav | .wav |
WAV (RIFF header) 8kHz 16-bit mono Pulse Code Modulation (PCM) | audio/x-wav | .wav |
Une diffusion vocale peut comporter jusqu'à 3 fichiers audio (introduction, contenu, conclusion), chacun avec un poids de 5Mo maximum et pour un poids total maximum de 10Mo.
Format de requête
Format de requête
1 - Contenu vocalisé
curl -X POST https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"name":"diffusion vocale via API REST",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"msisdns":["0612327745"],
"landlines":["0522331155"],
"voiceParam":{
"locale": "fr_FR",
"intro": {"text": "bonjour"},
"body": {"text": "mon contenu vocalisé"},
"outro": {"text": "au revoir"}
}
}
'
2 - Avec fichier audio
curl -X POST https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests \
-H 'Authorization: Bearer [Access-Token]' \
-H 'Content-Type: multipart/form-data' \
-F audio-intro=@/path/to/myintro.wav \
-F audio-body=@/path/to/mybody.wav \
-F audio-outro=@/path/to/myoutro.wav \
-F 'diffusion={
"name":"diffusion vocale via API REST",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"msisdns":["0612327745"],
"landlines":["0522331155"],
"voiceParam":{
"locale": "fr_FR"
}
};type=application/json'
Contenu vocalisé
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization","Bearer [Access-Token]");
con.setRequestProperty("Content-Type","application/json");
con.setDoOutput(true);
String postJsonData = "{" +
"\"name\":\"diffusion vocale via API REST\"," +
"\"contactIds\":[\"id_contact_1\", \"id_contact_2\", ...]," +
"\"mailingListIds\":[\"id_mailing_list_1\",\"id_mailing_list_2\", ...]," +
"\"excludedContactIds\":[]," +
"\"msisdns\":[\"0612327745\"]," +
"\"landlines\":[\"0522331155\"]," +
"\"voiceParam\":{" +
"\"locale\": \"fr_FR\"," +
"\"intro\": {\"text\": \"bonjour\"}," +
"\"body\": {\"text\": \"mon contenu vocalisé\"}," +
"\"outro\": {\"text\": \"au revoir\"}" +
"}" +
}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while((output = in.readLine())!=null){
response.append(output);
}
in.close();
1 - Contenu vocalisé
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""diffusion vocale via API REST"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0612327745""],
""landlines"":[""0522331155""],
""voiceParam"":{
""locale"": ""fr_FR"",
""intro"": {""text"": ""bonjour""},
""body"": {""text"": ""mon contenu vocalisé""},
""outro"": {""text"": ""au revoir""}
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
2 - Avec fichier audio
var client = new RestClient("https://[SERVER_URL]/api/v1.2")
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddFile("audio-intro", @"c:\path\to\myintro.wav", "audio/x-wav");
request.AddFile("audio-body", @"c:\path\to\mybody.wav", "audio/x-wav");
request.AddFile("audio-outro", @"c:\path\to\myoutro.wav", "audio/x-wav");
var json = @"{
""name"":""diffusion vocale via API REST"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0612327745""],
""landlines"":[""0522331155""],
""voiceParam"":{
""locale"": ""fr_FR""
}
}";
request.AddParameter("diffusion", json,"application/json", ParameterType.RequestBody);
IRestResponse r = client.Execute(request);
1 - Contenu vocalisé
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""diffusion vocale via API REST"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0612327745""],
""landlines"":[""0522331155""],
""voiceParam"":{
""locale"": ""fr_FR"",
""intro"": {""text"": ""bonjour""},
""body"": {""text"": ""mon contenu vocalisé""},
""outro"": {""text"": ""au revoir""}
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
2 - Avec fichier audio
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddFile("audio-intro", "c:\path\to\myintro.wav", "audio/x-wav");
request.AddFile("audio-body", "c:\path\to\mybody.wav", "audio/x-wav");
request.AddFile("audio-outro", "c:\path\to\myoutro.wav", "audio/x-wav");
Dim json = "{
""name"":""diffusion vocale via API REST"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0612327745""],
""landlines"":[""0522331155""],
""voiceParam"":{
""locale"": ""fr_FR""
}
}";
request.AddParameter("diffusion", json,"application/json", ParameterType.RequestBody);
Dim r as IRestResponse = client.Execute(request)
Contenu vocalisé
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"diffusion vocale via API REST",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"msisdns":["0612327745"],
"landlines":["0522331155"],
"voiceParam":{
"locale": "fr_FR",
"intro": {"text": "bonjour"},
"body": {"text": "mon contenu vocalisé"},
"outro": {"text": "au revoir"}
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
1 - Contenu vocalisé
package main
import (
"fmt"
"io/ioutil"
"net/http"
"strings"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name": "diffusion vocale via API REST",
"contactIds": ["id_contact_1", "id_contact_2", ...],
"mailingListIds": ["id_mailing_list_1", "id_mailing_list_2", ...],
"excludedContactIds": [],
"msisdns": ["0612327745"],
"landlines": ["0522331155"],
"voiceParam": {
"locale": "fr_FR",
"intro": {"text": "bonjour"},
"body": {"text": "mon contenu vocalisé"},
"outro": {"text": "au revoir"}
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
2 - Avec fichier audio
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"log"
"mime/multipart"
"net/http"
"net/textproto"
"os"
)
func main() {
var createPartFromFile = func(w *multipart.Writer, path, filename, partName, contentType string) {
file, _ := os.Open(path)
defer file.Close()
h := make(textproto.MIMEHeader)
h.Set("Content-Disposition", fmt.Sprintf(`form-data; name="%s"; filename="%s"`, partName, filename))
h.Set("Content-Type", contentType)
fileWriter, _ := w.CreatePart(h)
io.Copy(fileWriter, file)
}
var createPartFromJson = func(w *multipart.Writer, json string) {
h := make(textproto.MIMEHeader)
h.Set("Content-Disposition", fmt.Sprintf(`form-data; name="%s";`, "diffusion"))
h.Set("Content-Type", "application/json")
fieldWriter, _ := w.CreatePart(h)
fieldWriter.Write([]byte(json))
}
var requestBody bytes.Buffer
w := multipart.NewWriter(&requestBody)
createPartFromFile(w, "/path/to/myintro.wav", "intro.raw", "audio-intro", "audio/x-wav")
createPartFromFile(w, "/path/to/mybody.wav", "body.raw", "audio-body", "audio/x-wav")
createPartFromFile(w, "/path/to/myoutro.wav", "outro.raw", "audio-outro", "audio/x-wav")
json := `{
"name": "diffusion vocale via API REST",
"msisdns": ["0612327745"],
"voiceParam": {
"locale": "fr_FR"
}
}`
createPartFromJson(w, json)
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
req, err := http.NewRequest("POST", url, &requestBody)
req.Header.Set("Content-Type", w.FormDataContentType())
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le média de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un média |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | MaxFileSizeExceeded | Le poids total maximum des pièces jointes ne doit pas dépasser 5Mo. |
- Créer une diffusion multimédia
:id-group
/diffusion-requests
Ce point d'accès permet de créer une diffusion dans un groupe donné.
Format de requête
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '
{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"msisdns":["0600000000"],
"emails":["johndoe@domain.com"],
"smsParam":{
"encoding":"GSM7",
"senderName":"OpenBar",
"body":"mon contenu SMS"
},
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail"
}
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{"+
"\"name\":\"mon nom de diffusion\"," +
"\"contactIds\":[id_contact_1, id_contact_2, ...]," +
"\"mailingListIds\":[id_mailing_list_1,id_mailing_list_2, ...]," +
"\"excludedContactIds\":[]," +
"\"msisdns\":[\"0600000000\"]," +
"\"emails\":[\"johndoe@domain.com\"]," +
"\"smsParam\":{" +
"\"encoding\":\"GSM7\"," +
"\"senderName\":\"OpenBar\"," +
"\"body\":\"mon contenu SMS\"" +
"}," +
"\"emailParam\":{" +
"\"senderEmail\":\"johnthesender@domaine.com\"," +
"\"senderName\": \"John the sender\"," +
"\"body\": \"mon contenu email HTML\"," +
"\"subject\":\"Mon objet de mail\"" +
"}}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0600000000""],
""emails"":[""johndoe@domain.com""],
""smsParam"":{
""encoding"":""GSM7"",
""senderName"":""OpenBar"",
""body"":""mon contenu SMS""
},
""emailParam"":{
""senderEmail"":""johnthesender@domaine.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""mon nom de diffusion"",
""contactIds"":[""id_contact_1"", ""id_contact_2"", ...],
""mailingListIds"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
""excludedContactIds"":[],
""msisdns"":[""0600000000""],
""emails"":[""johndoe@domain.com""],
""smsParam"":{
""encoding"":""GSM7"",
""senderName"":""OpenBar"",
""body"":""mon contenu SMS""
},
""emailParam"":{
""senderEmail"":""johnthesender@domaine.com"",
""senderName"": ""John the sender"",
""body"": ""mon contenu email HTML"",
""subject"":""Mon objet de mail""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: multipart/form-data; boundary=efcaa4b6-a261-19be-4d49-4b7262bf039a'
));
$content = '{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"msisdns":["0600000000"],
"emails":["johndoe@domain.com"],
"smsParam":{
"encoding":"GSM7",
"senderName":"OpenBar",
"body":"mon contenu SMS"
},
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject":"Mon objet de mail"
}'
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name":"mon nom de diffusion",
"contactIds":["id_contact_1", "id_contact_2", ...],
"mailingListIds":["id_mailing_list_1","id_mailing_list_2", ...],
"excludedContactIds":[],
"emails":["johndoe@domain.com"],
"emailParam":{
"senderEmail":"johnthesender@domain.com",
"senderName": "John the sender",
"body": "mon contenu email HTML",
"subject": "Mon objet de mail"},
"msisdns":["0600000000"],
"smsParam":{
"encoding":"GSM7",
"senderName": "OpenBar",
"body":"mon contenu SMS"}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "97ed3af5-82a6-4b4a-99f1-d79e57d558f4", "name": "mon nom de diffusion", "msisdns": ["+33678581724"], "emails": ["johndoe@domain.com"], "contactIds": [], "mailingListIds": [], "excludedContactIds": [], "categoryIds": [], "emailParam": { "senderName": "John the sender", "senderEmail": "axel.leroy@hotmail.fr", "subject": "Mon objet de mail", "body": "mon contenu email HTML" }, "smsParam": { "senderName": "Rem nobi", "encoding": "GSM7", "body": "mon contenu SMS", "estimatedMsgCount": 1 }, "createdAt": "2018-05-22T17:13:44.238+02:00", "updatedAt": "2018-05-22T17:13:44.238+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
400 BadRequest | MaxFileSizeExceeded | Le poids total maximum des pièces jointes ne doit pas dépasser 5Mo. |
- Créer une diffusion avec publipostage
La fonction de publipostage permet d'envoyer des messages avec des contenus personnalisés à vos destinataires à l'aide de balises de remplacement.
Le format du message est commun, seules les sections spécifiques identifiées par des balises seront remplacées.
Pour émettre une diffusion de type publipostage
- Utilisez des balises de remplacement au format #balise# dans le contenu de vos messages SMS, EMAIL et synthèse vocale de vos appels,
- Renseignez la liste complète de vos balises dans le champ
mailingFields
- Définissez les valeurs de publipostage dans le champ
fields
dans l'attributmailingRecipients
Vous trouverez un exemple de publipostage sur le bloc de code à droite.
Notez que le nombre de SMS découpés peut varier d'un destinataire à l'autre, la longueur réelle des messages dépendant des valeurs de publipostage.
Notez que les champs landline
et landline2
désignant des numéros fixes sont indicatifs. Un numéro de mobile renseigné dans un champ landline
sera facturé comme un mobile et non un fixe.
- Destinataires de publipostage
Format et rôles des éléments du champ mailingRecipients
.
Champ | Type | Requis | Description |
---|---|---|---|
mobile | String | false | Le numéro de mobile principal du destinataire : utilisé pour les points de communication SMS_1 & VOICE_CELL1 de la stratégie d'envoi. |
mobile2 | String | false | Le numéro de mobile secondaire du destinataire : utilisé pour les points de communication SMS_2 & VOICE_CELL2 de la stratégie d'envoi. |
landline | String | false | Le numéro de fixe principal du destinataire : utilisé pour le point de communication VOICE_FIXED1 de la stratégie d'envoi. |
landline2 | String | false | Le numéro de fixe secondaire du destinataire : utilisé pour le point de communication VOICE_FIXED2 de la stratégie d'envoi. |
String | false | L'adresse email du destinataire : utilisée pour le point de communication EMAIL de la stratégie d'envoi. |
|
fields | Map{String,String} | false | Un ensemble de couple 'balise' / 'valeur de la balise' |
Chaque destinataire de publipostage doit au moins définir un point d'adressage en corrélation avec la stratégie d'envoi utilisée.
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api/v1.2/groups/5ab3ec70-87d8-48f9-befe-a1c86a31b66c/diffusion-requests" \
-H 'Authorization: Bearer [Access-Token]' \
-H 'Content-Type: application/json' \
-d ' {
"name": "Campagne avec publipostage",
"smsParam":{
"encoding":"GSM7",
"body":"Bonjour #prenom# #nom#, la nouvelle collection est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin."
},
"emailParam":{
"senderEmail": "john@domain.com",
"senderName": "John the sender",
"body":"<html style=\"font-family:Arial, Verdana, sans-serif;\"><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>La nouvelle collection savonette est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.</p></body></html>",
"subject":"Mon objet de mail"
},
"voiceParam":{
"intro":{text:"bonjour #prenom# #nom#"},
"body":{text:"La nouvelle collection est arrivée chez flush. Venez vite, un cadeau vous attend en magasin."}
},
"mailingFields" : ["nom", "prenom"],
"mailingRecipients": [
{
"mobile" : "+33647365520",
"mobile2" : "+33647365521",
"landline" : "+33537365544",
"landline2" : "+33536365569",
"email" : "p.jane@techtv.com",
"fields" : {
"prenom" : "Patrick",
"nom" : "Jane"
}
},
{
"mobile" : "+33647365524",
"mobile2" : "+33654389908",
"landline" : "+33537365541",
"landline2" : "+33536365562",
"email" : "Jess344@techtv.com",
"fields" : {
"prenom" : "Jessica",
"nom" : "Alba"
}
}
]
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"+
"\"name\": \"Campagne avec publipostage\"," +
"\"smsParam\":{" +
"\"encoding\":\"GSM7\"," +
"\"body\":\"Bonjour #prenom# #nom#, la nouvelle collection est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.\"" +
"}," +
"\"emailParam\":{" +
"\"senderEmail\": \"john@domain.com\"," +
"\"senderName\": \"John the sender\"," +
"\"body\":\"<html style=\\\"font-family:Arial, Verdana, sans-serif;\\\"><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>La nouvelle collection savonette est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.</p></body></html>\"," +
"\"subject\":\"Mon objet de mail\"" +
"}," +
"\"mailingFields\" : [\"nom\", \"prenom\"]," +
"\"mailingRecipients\": [" +
"{" +
"\"mobile\" : \"+33647365520\"," +
"\"mobile2\" : \"+33647365521\"," +
"\"email\" : \"p.jane@techtv.com\"," +
"\"fields\" : {" +
"\"prenom\" : \"Patrick\"," +
"\"nom\" : \"Jane\"" +
"}" +
"}," +
"{" +
"\"mobile\" : \"+33647365524\"," +
"\"mobile2\" : \"+33654389908\"," +
"\"email\" : \"Jess344@techtv.com\"," +
"\"fields\" : {" +
"\"prenom\" : \"Jessica\"," +
"\"nom\" : \"Alba\"" +
"}" +
"}" +
"]}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""Campagne avec publipostage"",
""smsParam"":{
""encoding"":""GSM7"",
""body"":""Bonjour #prenom# #nom#, la nouvelle collection est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.""
},
""emailParam"":{
""senderEmail"": ""john@domain.com"",
""senderName"": ""John the sender"",
""body"":""<html style=\""font-family:Arial, Verdana, sans-serif;\""><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>La nouvelle collection savonette est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.</p></body></html>"",
""subject"":""Mon objet de mail""
},
""mailingFields"" : [""nom"", ""prenom""],
""mailingRecipients"": [
{
""mobile"" : ""+33647365520"",
""mobile2"" : ""+33647365521"",
""email"" : ""p.jane@techtv.com"",
""fields"" : {""prenom"" : ""Patrick"",""nom"" : ""Jane""}
},
{
""mobile"" : ""+33647365524"",
""mobile2"" : ""+33654389908"",
""email"" : ""Jess344@techtv.com"",
""fields"" : {""prenom"" : ""Jessica"",""nom"" : ""Alba""}
}
]
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-requests", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""Campagne avec publipostage"",
""smsParam"":{
""encoding"":""GSM7"",
""body"":""Bonjour #prenom# #nom#, la nouvelle collection est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.""
},
""emailParam"":{
""senderEmail"": ""john@domain.com"",
""senderName"": ""John the sender"",
""body"":""<html style=\""font-family:Arial, Verdana, sans-serif;\""><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>La nouvelle collection savonette est arrivée chez Flush. Venez vite, un cadeau vous attend en magasin.</p></body></html>"",
""subject"":""Mon objet de mail""
},
""mailingFields"" : [""nom"", ""prenom""],
""mailingRecipients"": [
{
""mobile"" : ""+33647365520"",
""mobile2"" : ""+33647365521"",
""email"" : ""p.jane@techtv.com"",
""fields"" : {""prenom"" : ""Patrick"",""nom"" : ""Jane""}
},
{
""mobile"" : ""+33647365524"",
""mobile2"" : ""+33654389908"",
""email"" : ""Jess344@techtv.com"",
""fields"" : {""prenom"" : ""Jessica"",""nom"" : ""Alba""}
}
]
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "Campagne avec publipostage",
"smsParam":{
"encoding":"GSM7",
"body":"Bonjour #prenom# #nom#, Mon body SMS."
},
"emailParam":{
"senderName": "John the sender",
"senderEmail": "john@domain.com",
"body":"<html style=\"font-family:Arial, Verdana, sans-serif;\"><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>Mon body Email.</p></body></html>",
"subject":"Mon objet de mail"
},
"mailingFields" : ["nom", "prenom"],
"mailingRecipients": [
{
"mobile" : "+33647365520",
"mobile2" : "+33647365521",
"email" : "p.jane@techtv.com",
"fields" : {
"prenom" : "Patrick",
"nom" : "Jane"
}
},
{
"mobile" : "+33647365524",
"mobile2" : "+33654389908",
"email" : "Jess344@techtv.com",
"fields" : {
"prenom" : "Jessica",
"nom" : "Alba"
}
}
]
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests"
json := `{
"name": "Campagne avec publipostage"
"smsParam":{
"encoding":"GSM7",
"body":"Bonjour #prenom# #nom#, Mon body de SMS."
},
"emailParam":{
"senderEmail": "john@domain.com",
"senderName": "John the sender",
"body":"<html style=\"font-family:Arial, Verdana, sans-serif;\"><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>Mon body de mail.</p></body></html>",
"subject":"Mon objet de mail"
},
"mailingFields" : ["nom", "prenom"],
"mailingRecipients": [
{
"mobile" : "+33647365520",
"mobile2" : "+33647365521",
"email" : "p.jane@techtv.com",
"fields" : {
"prenom" : "Patrick",
"nom" : "Jane"
}
},
{
"mobile" : "+33647365524",
"mobile2" : "+33654389908",
"email" : "Jess344@techtv.com",
"fields" : {
"prenom" : "Jessica",
"nom" : "Alba"
}
}
]
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Format de réponse
Format de réponse
{
"id": "8408d9c7-c911-4f3d-9168-5ede07a37374",
"name": "Campagne avec publipostage",
"msisdns": [],
"emails": [],
"contactIds": [],
"mailingListIds": [],
"excludedContactIds": [],
"categoryIds": [],
"emailParam": {
"senderName": "John the sender",
"senderEmail": "axel.leroy@hotmail.fr",
"subject": "Mon objet de mail",
"body": "<html style=\"font-family:Arial, Verdana, sans-serif;\"><head><title></title></head><body><h2>Bonjour #prenom# #nom#</h2><p>Mon body Email.</p></body></html>"
},
"smsParam": {
"encoding": "GSM7",
"body": "Bonjour #prenom# #nom#, Mon body SMS.",
"estimatedMsgCount": 1
},
"mailingRecipients": [{
"mobile": "+33647365520",
"mobile2": "+33647365521",
"email": "p.jane@techtv.com",
"fields": {
"prenom": "Patrick",
"nom": "Jane"
}
}, {
"mobile": "+33647365524",
"mobile2": "+33654389908",
"email": "Jess344@techtv.com",
"fields": {
"prenom": "Jessica",
"nom": "Alba"
}
}],
"mailingFields": ["mobile2", "mobile", "nom", "prenom", "email"],
"createdAt": "2018-05-22T17:28:38.816+02:00",
"updatedAt": "2018-05-22T17:28:38.816+02:00"
}
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Content-type utilisé. |
Location | Pour une diffusion immédiate: /api/v1.2/diffusions/ :id-diffusion Pour une diffusion programmée: /api/v1.2/groups/ :id-group /diffusion-requests/:id-diffusion |
Emplacement de la ressource |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet. Un NotEmpty sur le champ recipients signifie qu'aucun contact, liste de diffusion ou MSISDN n'a été défini sur votre diffusion |
400 BadRequest | Msisdn | Le format d'un des numéros de téléphone fournis n'est pas correct |
400 BadRequest | InconsistentTimeSlots | Vous ne pouvez pas émettre une diffusion en dehors des périodes horaires définies dans l'application |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
400 BadRequest | MissingSenderOption | Le champ SenderName a été renseigné alors que vous n'avez pas l'option remplacement nom d'émetteurs activée |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif |
400 BadRequest | MediaAbsentInStrategy | La stratégie ne contient pas le média renseigné dans votre demande de diffusion |
400 BadRequest | MediaNotEnabled | Le media de votre diffusion n'est pas actif sur votre compte client. |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
400 BadRequest | SenderNameNotAllowed | L'émetteur n'est pas autorisé par la configuration |
400 BadRequest | SenderEmailNotAllowed | L'email n'est pas autorisé par la configuration |
400 BadRequest | MissingMedia | La diffusion doit contenir au moins un media |
400 BadRequest | MissingOneEndpoint | Les contacts du publipostage doivent disposer d'au moins un moyen de communication. |
400 BadRequest | NoDefaultStrategyAvailable | Le groupe n'a pas de stratégie par défaut. |
- Annuler une diffusion programmée
:id-group
/diffusion-requests/:id-diffusion-request
Ce point d'accès permet d'annuler une diffusion programmée
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests/[id_diffusion_request]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests/[id_diffusion_request]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-requests/[id_diffusion_request]", Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2");
Dim request = new RestRequest("/groups/[id_group]/diffusion-requests/[id_diffusion_request]", Method.DELETE);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
Dim response as IRestResponse = client.Execute(request);
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests/[id_diffusion_request]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-requests/[id_diffusion_request]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_diffusion_request | String | L'identifiant de la diffusion programmée à supprimer |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant fournis ne correspond à aucune diffusion programmée |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur la diffusion que vous souhaitez supprimer |
7. Consulter l'état d'une diffusion
Une fois la diffusion émise, l'état d'avancement de la diffusion est consultable au travers de l'objet Diffusion
Structure de l'état d'une diffusion
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la diffusion |
mainCvo | String | true | Le CVO du compte CEO |
name | String | true | Le nom de la diffusion |
emissionChannel | EmissionChannel | true | Le canal d'émission |
sendDate | Date | true | La date d'envoi |
creationDate | Date | true | La date de création |
group | Group | true | Le groupe via lequel la diffusion a été émise |
author | User | true | L'auteur |
medias | []Media | true | Les médias utilisés dans la diffusion |
state | []State | true | L'état de la diffusion |
Dans le cas de la récupération par identifiant, si l'on précise withContent=true dans l'url, les éléments suivants seront retournés :
Champ | Type | Read-Only | Description |
---|---|---|---|
smsParam | SmsParam | true | Paramètres de l'envoi SMS |
emailParam | EmailParam | true | Paramètres de l'envoi EMAIL |
faxParam | FaxParam | true | Paramètres de l'envoi FAX |
voiceParam | VoiceParam | true | Paramètres de l'envoi vocal |
Group
Voir la structure détaillée de l'objet dans la section groupe
User
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de l'utilisateur |
name | String | true | Le nom |
firstName | String | true | Le prénom |
String | true | L'email de l'utilisateur |
State
Champ | Type | Read-Only | Description |
---|---|---|---|
status | Status | true | Le statut de la diffusion |
startedAt | Date | true | La date de démarrage |
endedAt | Date | true | Le date de fin |
nbSelected | int | true | Le nombre de destinataires selectionnés |
nbReachable | int | true | Le nombre de destinataires joignables |
nbSuccess | int | true | Le nombre de destinataires joints |
ratio | double | true | Le pourcentage de succès |
Status
Les valeurs possibles sont: WAITING
, ONGOING
, COMPLETED
, CANCELING
, CANCELED
.
Valeur | Description |
---|---|
WAITING | La diffusion est en préparation pour l'envoi |
ONGOING | La diffusion est en cours |
COMPLETED | La diffusion est terminée |
CANCELING | La diffusion est cours d'annulation |
CANCELED | La diffusion a été annulée |
- Lister les diffusions
Ce point d'accès permet de récupérer la liste paginée des diffusions émises.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/diffusions" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/diffusions");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
<?php
$url = "https://[SERVER_URL]/api/v1.2/diffusions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/diffusions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/diffusions", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/diffusions", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
Format de réponse
Format de réponse
{ "content": [{ "id": "1eb51ea7-f4cd-463c-b0bf-5f19d26b3d9c", "mainCvo": "CVOSI38417821", "name": "Diffusion 1", "emissionChannel": "WEB", "group": { "id": "09a8e93e-4373-47e8-86f0-df080de3592d", "name": "groupe 1" }, "author": { "id": "d80c0c9a-51b0-4d09-8205-c9b2a83e576a", "name": "Blues", "firstName": "Agathe" }, "medias": ["SMS", "EMAIL"], "state": { "status": "COMPLETED", "startedAt": "2018-05-22T14:47:14.572+02:00", "endedAt": "2018-05-22T14:47:16.150+02:00", "nbSelected": 4, "nbReachable": 4, "nbSuccess": 4, "ratio": 1.0 }, "categoryIds": [], "sendDate": "2018-05-22T14:47:14.018+02:00", "creationDate": "2018-05-22T14:47:14.001+02:00" }, { "id": "7427ac7a-0d4c-49ca-b70c-cbe70f556bc1", "mainCvo": "CVOSI38417821", "name": "Diff 2", "emissionChannel": "WEB", "group": { "id": "09a8e93e-4373-47e8-86f0-df080de3592d", "name": "groupe 1" }, "author": { "id": "d80c0c9a-51b0-4d09-8205-c9b2a83e576a", "name": "Blues", "firstName": "Agathe" }, "medias": ["SMS"], "state": { "status": "COMPLETED", "startedAt": "2018-05-22T14:48:56.607+02:00", "endedAt": "2018-05-22T14:48:56.976+02:00", "nbSelected": 1, "nbReachable": 1, "nbSuccess": 1, "ratio": 1.0 }, "categoryIds": [], "sendDate": "2018-05-22T14:48:56.371+02:00", "creationDate": "2018-05-22T14:48:56.371+02:00" }], "totalPages": 1, "last": true, "totalElements": 2, "first": true, "size": 10, "number": 0, "numberOfElements": 2 }
- Status code : 200 OK
Filtres
Il est possible de filtrer les résultats des diffusions à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
dateMin | date au format RFC3339 | La date minimale d'envoi |
dateMax | date au format RFC3339 | La date maximale d'envoi |
medias | 'EMAIL', 'SMS', 'FAX' ou 'VOICE' | Le type de média utilisé dans la diffusion |
recipientFullName | String | Le nom d'un contact destinataire |
recipientEmail | L'adresse email d'un destinataire | |
recipientPhoneNumber | msisdn | Le numéro de téléphone d'un destinataire |
recipientCustomId | String | L'identifiant personnalisé associé à un ou plusieurs destinataires de cette diffusion |
groupIds | []String | Liste des identifiants de groupes |
Par exemple, la requête ci-dessous recherche les diffusions émises entre le 25 et le 29 avril 2017, qui utilise le média EMAIL
, dont le nom contient la chaîne de caractère interne
et dont un au moins des destinataires est johndoe@domain.com
.
curl -X GET "https://[SERVER_URL]/api/v1.2/diffusions?dateMax=2017-04-30T00:00:00.000Z&dateMin=2017-04-25T22:00:00.000Z&medias=EMAIL&name=interne&recipientEmail=johndoe@domain.com"
- Récupérer une diffusion
:id-diffusion
?withContent=:with-content
Ce point d'accès permet de récupérer une diffusion.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/diffusions/[id_diffusion]", Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/diffusions/[id_diffusion]", Method.GET)
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-diffusion |
String | L'identifiant unique de la diffusion. |
with-content |
bool | true si l'on souhaite avoir le contenu de la diffusion dans la réponse false par défaut |
Format de réponse
Format de réponse
{ "id": "1eb51ea7-f4cd-463c-b0bf-5f19d26b3d9c", "mainCvo": "CVOSI38417821", "name": "Diffusion 1", "emissionChannel": "WEB", "group": { "id": "09a8e93e-4373-47e8-86f0-df080de3592d", "name": "groupe 1" }, "author": { "id": "d80c0c9a-51b0-4d09-8205-c9b2a83e576a", "name": "Blues", "firstName": "Agathe" }, "medias": ["SMS", "EMAIL"], "state": { "status": "COMPLETED", "startedAt": "2018-05-22T14:47:14.572+02:00", "endedAt": "2018-05-22T14:47:16.150+02:00", "nbSelected": 4, "nbReachable": 4, "nbSuccess": 4, "ratio": 1.0 }, "sendDate": "2018-05-22T14:47:14.018+02:00", "creationDate": "2018-05-22T14:47:14.001+02:00" }
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur l'objet auquel vous tentez d'accéder |
8. Consulter le détail des remises
Les résultats de remise d'une diffusion sont définis par destinataires (recipients en anglais).
Un destinataire peut être un contact ou une adresse à la volée (adresse email ou numéro de mobile).
Un destinataire, s'il est un contact, peut regrouper plusieurs points de communication cible (adresse email ou numéros de mobile).
Structure d'un destinataire joint
- Destinataire
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique du destinataire. |
status | Status | true | Le statut du destinataire. |
label | String | true | Le nom/prénom ou adresse du destinataire |
communications | Communication[] | true | Liste des points de communication du destinataire |
mailingFields | Map{String,String} | true | Ensemble des variables de publipostage avec leur valeur |
customId | String | true | L'identifiant personnalisé associé au destinataire présent uniquement à la demande |
- Status
Les valeurs possibles sont: WAITING
, SUCCESS
, FAILED
, UNREACHABLE
Valeur | Description |
---|---|
WAITING | Le message est en attente d'envoi |
SUCCESS | Le destinataire a été joint avec succès |
FAILED | La condition de succès n'a pas été atteinte |
UNREACHABLE | Le destinataire est injoignable, on n'envoie pas de message |
- Communication
Champ | Type | Description |
---|---|---|
address | String | L'adresse du point de communication |
status | Communication Status | Le statut de l'envoi vers ce point de communication |
cause | Communication Cause | La cause du statut |
details | String | Détails sur la cause (champ optionnel) |
timestamp | Date | La date de mise à jour du statut |
sminfo | SMInfo | Le détail du SMS émis |
faxinfo | FaxInfo | Le détail du fax émis |
vcinfo | VCInfo | Le détail de l'appel vocal émis |
Les champs sminfo
, faxinfo
et vcinfo
sont uniquement renseignés
s'il s'agit respectivement d'une communication SMS, fax ou vocale.
- SMInfo (Short Message information)
Champ | Type | Description |
---|---|---|
operatorCode | String | L'opérateur téléphonique utilisé (si détecté) |
country | String | Le code pays ISO3 du pays cible (si détecté) |
msgCount | Integer | Le nombre de SMS utilisés pour véhiculer le message (SMS long) |
- FaxInfo
Champ | Type | Description |
---|---|---|
operatorCode | String | L'opérateur téléphonique utilisé (si détecté) |
country | String | Le code pays ISO3 du pays cible (si détecté) |
sentPages | Integer | Le nombre de pages transmises |
retryCount | Integer | Le nombre de retentatives du fax |
- VCInfo (Voice Call information)
Champ | Type | Description |
---|---|---|
operatorCode | String | L'opérateur téléphonique utilisé (si détecté) |
country | String | Le code pays ISO3 du pays cible (si détecté) |
duration | Integer | La durée de l'appel en secondes |
status | Integer | Le statut détaillé de l'appel (voir ci-dessous) |
replayCount | Integer | Le nombre de fois que le message a été répété |
dtmfs | String | La liste des touches saisies au cours de l'appel |
- Détail du statut
Le détail du champ status
d'un appel téléphonique encode 4
informations supplémentaires sur ses 4 premiers bits.
Bit | Description |
---|---|
0 | introAcked : l'introduction du message a bien été acquitté par le destinataire |
1 | bodyAcked : le contenu du message a bien été acquitté par le destinataire |
2 | fullyPlayed : le contenu du message a été intégralement joué |
3 | voicemail : répondeur détecté |
Par exemple un statut valant 5
(101
) équivaut à introduction
aquittée et message intégralement joué.
- Communication Status
Valeur | Description |
---|---|
WAITING | Le message est en attente d'envoi |
CANCELED | Le message a été annulé avant l'envoi |
REJECTED | erreur technique avant l'acquittement opérateur |
UNREACHABLE | Le point de communication est injoignable |
INPROGRESS | Le message est en cours d'envoi |
FAILED | Le message est en erreur |
SUCCESS | Le message a été envoyé au point de communication avec succès |
- Communication Cause
Valeur | Description |
---|---|
BLACKLISTED | désinscrit |
EMPTY_ADDRESS | pas d'adresse joignable |
UNREACHABLE_ADDRESS | coordonnée injoignable |
INVALID_ADDRESS | adresse invalide |
DOM_NOT_ENABLED | envoi vers les DOM non autorisé |
USA_NOT_ENABLED | envoi vers les USA non autorisé |
INTERNATIONAL_NOT_ENABLED | envoi vers l'étranger non autorisé |
OVERCHARGED_NUMBER | numéro surtaxé non autorisé |
QUOTA_REACHED | quota du compte atteint |
EXPIRED | expiré |
DROPPED | pas d'accusé de réception opérateur |
DUPLICATE_ADDRESS | doublon |
DELIVERED | remis au destinataire |
SENT | transmis à l'opérateur |
NO_ACK | pas d'acquittement opérateur |
ACK | lu par le destinataire |
NACK | rejeté par l'opérateur |
BUSY | correspondant occupé |
NO_REPLY | pas de réponse du correspondant |
NO_RING | pas de tonalité |
NO_ROUTE | numéro non accessible |
Correpondance entre statuts et causes possibles
Statut | Cause |
---|---|
WAITING | null |
CANCELED | null |
REJECTED | NO_ACK, NACK, QUOTA_REACHED, EXPIRED |
UNREACHABLE | EMPTY_ADDRESS, INVALID_ADDRESS, DUPLICATE_ADDRESS, BLACKLISTED, UNREACHABLE_ADDRESS, DOM_NOT_ENABLED, USA_NOT_ENABLED, INTERNATIONAL_NOT_ENABLED, OVERCHARGED_NUMBER |
INPROGRESS | SENT |
FAILED | DROPPED, EXPIRED, UNREACHABLE_ADDRESS, BLACKLISTED, BUSY, NO_REPLY, NO_RING, NO_ROUTE |
SUCCESS | DELIVERED, ACK |
Lister les messages remis
:id-diffusion
/recipients
Ce point d'accès permet de récupérer la liste paginée des destinataires pour une diffusion.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]/recipients" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]/recipients");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]/recipients";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/diffusions/[id_diffusion]/recipients"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/diffusions/[id_diffusion]/recipients", Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/diffusions/[id_diffusion]/recipients", Method.GET)
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-diffusion |
String | L'identifiant unique de la diffusion. |
withDetails |
boolean | Ajoute le champ details dans les objets Communication |
withMailingFields |
boolean | Ajoute les variables de publipostage |
withCustomIds |
boolean | Ajoute le champ customId dans les résultats |
Format de réponse
Format de réponse
{ "content": [{ "id": "5b69581b8d4f7f52c78d46a8", "status": "FAILED", "label": "Perez Alice", "communications": [ { "timestamp": "2018-08-07T10:28:11.000+02:00", "status": "FAILED", "cause": "UNREACHABLE_ADDRESS", "address": "+33735488649", "details": "Recipient barred" }, { "timestamp": "2018-08-07T10:28:11.000+02:00", "status": "FAILED", "cause": "UNREACHABLE_ADDRESS", "address": "+33699206906", "details": "Recipient barred" }, { "timestamp":"2025-02-24T16:28:58.249+01:00", "status":"SUCCESS", "cause":"DELIVERED", "sminfo": { "msgCount":1, "operatorCode":"FRTE", "country":"FRA" }, "address":"+33612457818" } ] }], "totalElements": 3, "last": true, "totalPages": 1, "numberOfElements": 3, "first": true, "size": 10, "number": 0 }
- Status code : 200 OK
Filtres
Il est possible de filtrer les résultats des messages remis à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
communicationMedia | Media | Le type de média sur lequel le destinataire a été joint |
label | String | Le nom ou le prénom de contact |
address | String | L'adresse du destinataire |
customId | String | L'identifiant personnalisé associé au destinataire |
Par exemple, la requête ci-dessous recherche le destinataire portant l'adresse johndoe@domain.com
, de type EMAIL
et dont le nom contient john
.
curl -X GET "https://[SERVER_URL]/api/v1.2/diffusion/id_diffusion/recipients?address=johndoe@domain.com&communicationMedia=EMAIL&label=john
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
9. Consulter les réponses SMS
Une réponse SMS est un objet qui représente la réponse SMS d'un destinataire à une diffusion.
La réponse SMS est une option à activer sur le compte CEO
Structure d'une réponse SMS
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la réponse. |
timestamp | Date | true | La date de réception. |
address | String | true | L'adresse de l’émetteur. |
recipient | String | true | Numéro du déstinataire. |
body | String | true | Le corps du message. |
author | User | true | L'auteur. |
country | String | true | Le code pays de la réponse (Format ISO 3166-1 alpha-3 ). |
diffusionIds | String[] | true | L'identifiant des diffusions éligibles |
isFuzzy | boolean | true | Indique si il y a du "flou" dans l'association de cette réponse SMS à une diffusion. C'est le cas quand une réponse peut aussi être associée à une ou plusieurs diffusions du même groupe, envoyée(s) par un autre utilisateur. |
Récupérer les réponses
:id-group
/replies
Ce point d'accès permet de récupérer la liste paginée des réponses SMS reçues en réponse aux SMS envoyés
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/replies" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/replies");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/replies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/replies";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/replies", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/replies", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group |
String | L'identifiant unique du groupe |
Format de réponse
Format de réponse
{ "content":[ { "id":"5ae0507c49811e45f0b797ac", "timestamp":"2018-04-25T11:55:08.000+02:00", "address":"+33699518600", "recipient":"95000", "body":"contenu du SMS 1", "author":{"id":"6ba76d26-bf8b-47b3-9c98-2d544f002a7a","email":"example.roy@gmail.com","name":"Lefevre","firstName":"Maëlle"}, "country":"FRA", "diffusionIds":["d1414845-70d2-4b62-acf6-cee6342c66d8"], "isFuzzy":false },{ "id":"5ae0507c49811e45f0b797ad", "timestamp":"2018-04-25T12:12:07.000+02:00", "address":"+33791871411", "body":"un autre contenu", "author":{"id":"6ba76d26-bf8b-47b3-9c98-2d544f002a7a","email":"example.roy@gmail.com","name":"Lefevre","firstName":"Maëlle"}, "country":"FRA", "diffusionIds":["d1414845-70d2-4b62-acf6-cee6342c66d8", "bc656972-563b-4a11-be93-aad542b6439e"], "isFuzzy":true } ], "totalPages":1, "last":true, "totalElements":2, "first":true, "size":10, "number":0, "numberOfElements":2 }
- Status code : 200 OK
Filtres
Il est possible de filtrer les résultats des messages remis à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
dateMin | date au format RFC3339 | La date minimale d'envoi |
dateMax | date au format RFC3339 | La date maximale d'envoi |
label | String | Le nom ou le prénom du contact |
address | email ou msisdn | L'adresse email ou le msisdn de l'émetteur |
diffusionId | String | Identifiant d'une diffusion |
Par exemple, la requête ci-dessous recherche les réponses du numéro 0648576900
reçues entre le 18 et le 26 avril 2017 et dont le nom ou prénom de contact est Patrick
.
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/:id-group/replies?address=0648576900&dateMax=2017-04-26T23:59:59.999Z&dateMin=2017-04-18T22:00:00.000Z&label=Patrick
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Votre compte n'a pas l'option réponse SMS, ou vous n'avez pas les droits sur le groupe indiqué |
10. SMS+
Le service SMS+ permet de recevoir des SMS entrants selon des régles de routage, associées à un compte, un groupe de ce compte et un responsable.
SMS+ est lié aux options
SMS_PLUS_SHORT_NUMBER
et SMS_LONG_NUMBER
à activer sur le compte CEO
Il est possible pour un utilisateur de CEO de répondre à un SMS entrant (voir réponse SMS+).
L'échange SMS entrants et SMS sortants entre les mêmes interlocuteurs (dans les 72h qui suivent le premier SMS entrant) est appelé une conversation (voir conversation SMS+).
SMS entrant
- Structure d'un SMS entrant
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique du SMS entrant |
timestamp | Date | true | La date de reception du SMS entrant |
sender | String | true | L'adresse de l'émetteur (MSISDN ou alias) |
body | String | true | Le corps du message |
recipient | String | true | Le numéro ciblé par le SMS entrant |
groupId | String | true | Le groupe auquel est rattaché le SMS entrant |
cvo | String | true | Le CVO du compte CEO |
conversationId | String | true | L'identifiant de la conversation dont fait partie le SMS entrant |
isRoot | boolean | true | Indique si ce SMS est à l'origine d'une conversation |
campaignId | String | true | L'identifiant de la campagne à laquelle est associé le SMS entrant (présent uniquement quand le paramètre d'URL withCampaignIds est égal à true ) |
- Récupérer les SMS entrants
Ce point d'accès permet de récupérer la liste paginée des SMS MO reçus
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/smsplus" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/smsplus");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/smsplus"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("accept", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/smsplus";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/smsplus", Method.GET);
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/smsplus", Method.GET)
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
N/A
Format de réponse
Format de réponse
{ "content": [{ "id": "59a426dbaad20587d9f4c5e6", "recipient": "81212", "body": "81212 TOP FR", "timestamp": "2016-11-30T11:30:00.000+02:00", "sender": "+33687798413", "cvo": "CVOSI38410015", "groupId": "68107800-9872-4896-8b6e-eeab499482c5", "conversationId": "59a426dbaad20587d9f4c5f5", "root": true }, { "id": "59a426dbaad20587d9f4c5e7", "recipient": "118712", "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "timestamp": "2016-11-30T11:35:00.000+02:00", "sender": "+33687798476", "cvo": "CVOSI38410015", "groupId": "68107800-9872-4896-8b6e-eeab499482c5", "conversationId": "59a426dbaad20587d9f4c5f3", "root": true, "campaignId": "77372312-fe1a-42c5-9f2f-36dbce61df93" } ], "size": 10, "totalPages": 1, "totalElements": 2, "numberOfElements": 2, "last": true, "first": true }
- Status code : 200 OK
- Response Body : Retourne une liste d'objets SMS entrant
Filtres
Il est possible de filtrer les résultats des sms entrants à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
groupIds | []String | Une liste d'identifiants de groupe |
body | String | Un extrait du texte contenu dans le corps du SMS entrant |
recipient | String | Un extrait du numéro cible du SMS entrant |
smsPlusCampaignIds | []String | Une liste d'identifiants de campagne SMS+ |
author | String | Un identifiant de responsable de sous mot-clef |
sender | String | Un extrait du numéro emetteur du SMS entrant |
dateMin | date au format RFC3339 | La date minimale d'envoi |
dateMax | date au format RFC3339 | La date maximale d'envoi |
Par exemple, la requête ci-dessous recherche les sms entrants dont le corps de message contient soldes
reçus entre le 18 et le 26 avril 2017.
curl -X GET "https://[SERVER_URL]/api/v1.2/smsplus?body=soldes&dateMax=2017-04-26T23:59:59.999Z&dateMin=2017-04-18T22:00:00.000Z
Autres paramètres d'URL
Champ | Type | Description |
---|---|---|
withCampaignIds | boolean | Inclure les identifiants des campagnes SMS+ dans les résultats |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | SmsPlusNotAllowed | Votre compte n'a pas l'option SMS+ |
Réponse SMS+
- Structure d'une réponse à un SMS entrant
Champ | Type | Read-Only | Description |
---|---|---|---|
body | String | true | Le corps de la réponse |
encoding | String | true | Le charset utilisé pour l'envoi (GSM7 ou UCS2 ) |
- Envoyer une réponse à un SMS entrant
:id-conversation
/replies
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]/replies" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"body":"une réponse ...",
"encoding":"GSM7"
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]/replies");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"body\":\"une réponse ...\",\"encoding\":\"GSM7\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/smsplus/conversations/[id_conversation]/replies", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""body"":""une réponse ..."",
""encoding"":""GSM7""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/smsplus/conversations/[id_conversation]/replies", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""body"":""une réponse ..."",
""encoding"":""GSM7""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]/replies";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"body":"Mon body",
"encoding":"GSM7"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]/replies"
json := `{
"body":"un réponse",
"encoding":"GSM7"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_conversation |
String | L'identifiant de la conversation |
Format de réponse
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | SmsPlusNotAllowed | Votre compte n'a pas l'option SMS+ |
400 BadRequest | SmsPlusFirstNotFound | La conversation SMS+ n'existe pas |
400 BadRequest | SmsPlusInvalidGroup | Vous n'appartenez pas au groupe de la conversation |
400 BadRequest | SmsTooLong | Le contenu du message SMS est trop long |
Conversation SMS+
- Structure d'un élément de conversation SMS+
Champ | Type | Read-Only | Description |
---|---|---|---|
body | String | true | Le contenu du SMS |
timestamp | Date | true | La date de réception du SMS |
sender | String | true | L'adresse de l'émetteur (MSISDN ou alias) |
recipient | String | true | Le numéro ciblé par le SMS |
isInbound | boolean | true | Indique si le SMS est entrant (true) ou sortant (false) |
deliveryState | DeliveryState | true | Dernière notification d'état pour les SMS sortants |
Objet DeliveryState
Champ | Type | Read-Only | Description |
---|---|---|---|
timestamp | Date | true | La date de réception de la notification |
status | String | true | Le statut de la notification |
cause | String | true | La cause (en cas d'échec) |
desc | String | true | Le contenu du SMS |
op | String | true | L'opérateur |
msgcount | Integer | true | Le nombre de SMS (en cas de SMS trop long) |
status peut prendre les valeurs :
WAITING
,CANCELED
,REJECTED
,INPROGRESS
,FAILED
,UNREACHABLE
,SUCCESS
cause peut prendre les valeurs :
BLACKLISTED
,EMPTY_ADDRESS
,UNREACHABLE_ADDRESS
,DOM_NOT_ENABLED
,USA_NOT_ENABLED
,INTERNATIONAL_NOT_ENABLED
,
QUOTA_REACHED
,EXPIRED
,EXPIRED_DIFFUSION
,DUPLICATE_ADDRESS
,DELIVERED
,SENT
,NO_ACK
,ACK
,NACK
- Récuperer une conversation SMS+
:id-conversation
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/smsplus/conversations/[id_conversation]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/smsplus/conversations/[id_conversation]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/smsplus/conversations/[id_conversation]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
Format de réponse
Format de réponse
[{ "body": "FILM spielberg", "timestamp": 1504270797000, "sender": "+33678581724", "recipient": "118712", "isInbound": true }, { "body": "Sugarland Express", "timestamp": "2016-11-30T11:30:00.000+02:00", "sender": "Robin Scherbatsky", "recipient": "+33678581724", "deliveryState": { "status": "SUCCESS", "cause": "DELIVERED" "sminfo": { "msgCount":1, "operatorCode":"ACMO", "country":"FRA" } }, "isInbound": false }, { "body": "SUIVANT", "timestamp": "2016-11-30T11:35:00.000+02:00", "sender": "+33678581724", "recipient": "118712", "isInbound": true }, { "body": "Les dents de la mer", "timestamp": "2016-11-30T11:36:00.000+02:00", "sender": "Robin Scherbatsky", "recipient": "+33678581724", "deliveryState": { "status": "INPROGRESS", "cause": "SENT" "sminfo": { "msgCount":1 } }, "isInbound": false }]
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | SmsPlusNotAllowed | Votre compte n'a pas l'option SMS+ |
400 BadRequest | SmsPlusFirstNotFound | La conversation SMS+ n'existe pas |
400 BadRequest | SmsPlusInvalidGroup | Vous n'appartenez pas au groupe de la conversation |
Campagnes SMS+
- Structure d'un campagne SMS+
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique du SMS entrant |
name | String | true | Le nom de la campagne |
cvo | String | true | Le CVO du compte CEO |
group | Group | true | Le groupe associé à la campagne |
- Récupérer les campagnes SMS+
Ce point d'accès permet de récupérer la liste paginée des campagnes SMS+
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/smsplus/[groupId]/campaigns" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/smsplus/[groupId]/campaigns");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/smsplus/[groupId]/campaigns"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/smsplus/[groupId]/campaigns";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/smsplus/[groupId]/campaigns", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/smsplus/[groupId]/campaigns", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
Format de réponse
Format de réponse
{ "content": [{ "id": "77372312-fe1a-42c5-9f2f-36dbce61df93", "name": "Promo" }, { "id": "40275410-cd2d-49ac-9fd6-33d6d9c1144f", "name": "Soldes 2018" }], "totalPages": 1, "last": true, "totalElements": 2, "first": true, "size": 10, "number": 0, "sort": [{ "direction": "ASC", "property": "name", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }], "numberOfElements": 2 }
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
11. Statistiques
Les statistiques permettent d’obtenir les statistiques sur les différents usages du service, quel que soit le mode de déclenchement.
Les données statistiques couvrent une période sur les 13 derniers mois complets + le mois en cours.
Seul l'affichage en mode tableau est disponible depuis l'API.
- Récuperer les statistiques tableau
Ce point d'accès permet de d'obtenir les statistiques tableau visibles par l'utilisateur.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/statistics/array" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/statistics/array");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/statistics/array", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/statistics/array", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/statistics/array";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Cache-Control' => 'no-cache',
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/statistics/array"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
N/A
- Payload
N/A
Filtres
Il est possible de filtrer les résultats sur lesquels portent les statistisques à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Obligatoire ? | Description |
---|---|---|---|
from | Date | oui | Date de début |
to | Date | oui | Date de fin |
groupIds | String[] | non | Liste des identifiants de groupes |
categoryIds | String[] | non | Liste des identifiants de catégories de diffusions |
countries | String[] | non | Le code pays (Format ISO 3166-1 alpha-3 ). |
cvos | String[] | non | Liste des identifiants de contrat (si votre compte a des entités facturables) |
emissionChannels | EmissionChannel[] | non | Les canaux d'émission |
types | Type[] | non | Les types de messages (SMS,EMAIL, réponse à SMS+ ...) |
addresses | String[] | non | Liste d'adresses de destinataires |
authorIds | String[] | non | Liste des émetteurs |
Type
Valeurs possibles: SMS_SENT
,EMAIL_SENT
,SMS_PLUS
,SMS_PLUS_REPLY
,SMS_REPLY
,FAX_SENT
,FIXED_CALL
,CELL_CALL
Groupements
Les statistiques tableau sont une aggrégation par Type. Il est possible d'ajouter d'autres groupements :
La vue par tableau propose de faire des groupements à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
groupByCriterias | GroupByCriteria[] | Liste des groupements |
GroupByCriteria
Valeurs possibles:
Champ | Description |
---|---|
GROUP | groupement par identifiant de groupe |
GROUP_NAME | groupement par nom de groupe (si un groupe est renommé, il apparaîtra sous 2 noms différents) |
EMISSION_CHANNEL | groupement par EmissionChannel |
AUTHOR | groupement par identifiant de l'émétteur du message |
CONTRACT_CVO | groupement par identifiant de contrat (intéressant dans le cas d'un compte avec entités facturables) |
COUNTRY | groupement par pays de destination des messages (Format ISO 3166-1 alpha-3 ) |
CATEGORY | groupement par catégorie de diffusion |
L'ordre dans lequel les groupements sont renseignés est important.
Demander &groupByCriterias=COUNTRY&groupByCriterias=GROUP n'affichera pas les mêmes résultats que &groupByCriterias=GROUP&groupByCriterias=COUNTRY.
En effet dans le premier cas l'aggrégation se fera par pays puis par groupe au sein de chaque pays, alors que dans le deuxème cas l'aggrégation se fera par groupe puis par pays au sein de chaque groupe.
Par exemple, la requête ci-dessous demande les statistiques tableau sur les messages :
- envoyés entre le 26 avril 2017 à 20h00 et le 27 avril 2017 à 20h00,
- sur les messages envoyés sur des fixes et des mobiles
- groupés par pays puis par groupes
curl -X GET "https://[SERVER_URL]/api/v1.2/statistics/array?from=2017-04-26T20:00:00.000Z&to=2017-04-27T20:00:00.000Z&groupByCriterias=COUNTRY&groupByCriterias=GROUP&types=FIXED_CALL&types=CELL_CALL"
Format de réponse
Format de réponse
Exemple de réponse pour un groupement par pays : [ ["none",{"EMAIL_SENT":{"count":3,"successCount":3,"failureCount":3,"billingQuantity":0}}], ["FRA", {"SMS_SENT": {"count":2,"successCount":2,"failureCount":2,"billingQuantity":0}}], ["DEU", {"SMS_SENT": {"count":1,"successCount":1,"failureCount":1,"billingQuantity":0}}] ] Exemple de réponse pour un groupement par pays / diffusion : [ ["none","fd96c238-cbec-4b31-8b6e-6b62e81e3e0c",{"EMAIL_SENT":{"count":3,"successCount":3,"failureCount":3,"billingQuantity":0}}], ["FRA", "fd96c238-cbec-4b31-8b6e-6b62e81e3e0c",{"SMS_SENT": {"count":2,"successCount":2,"failureCount":2,"billingQuantity":0}}], ["DEU", "fd96c238-cbec-4b31-8b6e-6b62e81e3e0c",{"SMS_SENT": {"count":1,"successCount":1,"failureCount":1,"billingQuantity":0}}] ] Exemple de réponse pour un groupement par groupe uniquement : [ ["71a078f9-4756-4a1e-96ad-abcac94084da",{"SMS_SENT":{"count":2,"successCount":2,"failureCount":0,"billingQuantity":2},"EMAIL_SENT":{"count":2,"successCount":2,"failureCount":0,"billingQuantity":2}}], ["fd96c238-cbec-4b31-8b6e-6b62e81e3e0c",{"SMS_SENT":{"count":2,"successCount":2,"failureCount":0,"billingQuantity":2}}] ]
Le réponse est un tableau de tableaux dans lesquels les premiers éléments sont les valeurs des groupements, et le dernier élément est un objet contenant les statistiques aggrégées pour chaque Type de message.
[
[ValeurGroupment1, ValeurGroupment2, ...,{
"Type1":{"count":XX,"successCount":XX,"failureCount":XX,"billingQuantity":XX},
"Type2":{"count":XX,"successCount":XX,"failureCount":XX,"billingQuantity":XX}
}],
[ValeurGroupment1, ValeurGroupment2, ...,{
"Type1":{"count":XX,"successCount":XX,"failureCount":XX,"billingQuantity":XX},
"Type2":{"count":XX,"successCount":XX,"failureCount":XX,"billingQuantity":XX}
}],
...
]
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotNull | Le filtre indiqué par la propriété "field" dans le message d'erreur est obligatoire |
400 BadRequest | DateFromAfterTo | La période renseignée (from/to) est invalide: la date de début se situe aprés la date de fin |
400 BadRequest | TooOld | La date de début est trop ancienne (13 derniers mois complets + le mois en cours) |
12. Coordonnées injoignables
Une coordonnée injoignable est une adresse (sms, email, ...) qui n'a pas pu être contactée.
Structure d'une coordonnée injoignable
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la coordonnée |
createdAt | Date | true | La date de mise en quarantaine |
expireAt | Date | true | La date jusqu'à laquelle la coordonnée est en quarantaine |
address | String | true | L'adresse injoignable |
media | Media | true | Le media ciblé lors de l'envoi |
groupId | String | true | Le groupe utilisé lors de la diffusion |
Media
Les valeurs possibles sont : SMS
, EMAIL
, FAX
et VOICE
.
- Lister les coordonnées injoignables
:id-group
/unreachable-addresses
Ce point d'accès permet de récupérer la liste paginée des coordonnées injoignables associées à un groupe.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/unreachable-addresses", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/unreachable-addresses", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(String(body))
}
- Query Parameters
Parameter | Type | Requis | Description |
---|---|---|---|
id_group | String | true | L'identifiant du groupe concerné |
Format de réponse
Format de réponse
{ "content": [{ "id": "5b043f11755883319b034a69", "cvo": "CVOSI38417821", "expireAt": "2018-11-22T18:02:25.126+01:00", "address": "+33678581724", "media": "SMS", "groupId": "09a8e93e-4373-47e8-86f0-df080de3592d", "createdAt": "2018-05-22T18:02:25.126+02:00" }, { "id": "5b043f5f755883319b034ae7", "cvo": "CVOSI38417821", "expireAt": "2018-11-22T18:03:43.468+01:00", "address": "+33678544554", "media": "SMS", "groupId": "09a8e93e-4373-47e8-86f0-df080de3592d", "createdAt": "2018-05-22T18:03:43.468+02:00" }], "totalPages": 1, "last": true, "totalElements": 2, "first": true, "size": 10, "number": 0, "sort": [{ "direction": "ASC", "property": "expireAt", "ignoreCase": false, "nullHandling": "NATIVE", "descending": false, "ascending": true }], "numberOfElements": 2 }
- Status code : 200 Ok
Filtres
Il est possible de filtrer les résultats de la recherche à l'aide des paramètres d'URL ci-dessous.
Parameter | Type | Requis | Description |
---|---|---|---|
address | String | false | Adresse en quarantaine |
dateStart | date | false | Borne basse pour le début de la quarantaine |
dateEnd | date | false | Borne haute pour le début de la quarantaine |
medias | []Media | false | Liste des médias sur lesquels la diffusion a été effectuée |
pageSize | int | false | Nombre d'éléments contenus par page |
pageNumber | int | false | Page que vous souhaitez visualiser |
Par exemple, la requête ci-dessous recherche les coordonnées portant l'adresse johndoe@domain.com
, de type EMAIL
.
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses?address=johndoe@domain.com&medias=EMAIL
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Sortir une coordonnée de quarantaine
:id-group
/unreachable-addresses/:id-unreachable-address
Ce point d'accès permet de sortir une coordonnée de quarantaine pour un groupe.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses/[id-unreachable-address]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses/[id-unreachable-address]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/unreachable-addresses/[id-unreachable-address]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json")
IRestResponse response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request = new RestRequest("/groups/[id_group]/unreachable-addresses/[id-unreachable-address]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses/[id-unreachable-address]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unreachable-addresses/[id-unreachable-address]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_unreachable_address | String | L'identifiant de l'adresse à réactiver |
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | Le groupe ou la coordonnée auquel vous tentez d'accéder n'existe pas |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe auquel vous souhaitez accèder |
13. Coordonnées désinscrites
Une coordonnée désinscrite est une adresse qui a été désinscrite par l'utilisateur via le lien de désinscription.
Structure d'une coordonnée désinscrite
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant unique de la coordonnée |
address | String | true | L'adresse désinscrite |
media | Media | true | Le media ciblé lors de l'envoi |
cvo | String | true | Le cvo du compte CEO |
groupId | String | true | Le groupe utilisé lors de la diffusion |
diffusionId | String | true | La diffusion dans laquelle l'adresse a été contactée |
createdAt | Date | true | La date à laquelle l'adresse a été désinscrite |
Media
Les valeurs possibles sont : SMS
, EMAIL
, FAX
et VOICE
.
- Lister les coordonnées désinscrites
:id-group
/unsubscriptions
Ce point d'accès permet de récupérer la liste paginée des coordonnées désinscrites associées à un groupe.
Format de requête
Format de requête
curl -X GET https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/unsubscriptions", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/unsubscriptions", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(String(body))
}
- Query Parameters
Parameter | Type | Requis | Description |
---|---|---|---|
id_group | String | true | L'identifiant du groupe concerné |
Filtres
Il est possible de filtrer les résultats de la recherche à l'aide des paramètres d'URL ci-dessous.
Parameter | Type | Requis | Description |
---|---|---|---|
address | String | false | Adresse en quarantaine |
dateStart | date | false | Borne basse pour la date de désinscription |
dateEnd | date | false | Borne haute pour la date de désinscription |
medias | []Media | false | Liste des médias sur lesquels la diffusion a été effectuée |
pageSize | int | false | Nombre d'éléments contenus par page |
pageNumber | int | false | Page que vous souhaitez visualiser |
Par exemple, la requête ci-dessous recherche les coordonnées portant l'adresse johndoe@domain.com
, de type EMAIL
.
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions?address=johndoe@domain.com&medias=EMAIL
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Supprimer une désinscription
:id-group
/unsubscriptions/:id-unsubscriptions
Ce point d'accès permet d' annuler la désincription pour un groupe et une adresse spécifique.
Format de requête
Format de requête
curl -X DELETE \
https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions/[id-unsubscriptions] \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions/[id-unsubscriptions]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/unsubscriptions/[id-unsubscriptions]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json")
IRestResponse response = client.Execute(request);
Dim client = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request = new RestRequest("/groups/[id_group]/unsubscriptions/[id-unsubscriptions]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions/[id-unsubscriptions]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions/[id-unsubscriptions]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_unsubscriptions | String | L'identifiant de l'adresse à réactiver |
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | Le groupe ou la coordonnée auquel vous tentez d'accéder n'existe pas |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe auquel vous souhaitez accèder |
- Désinscrire un numéro
:id-group
/unsubscriptions
Format de requête
Format de requête
curl -X POST \
https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"address": "735677896",
"media": "SMS"
}
'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"address\": \"735677896\",\"media\": \"SMS\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/unsubscriptions", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""address"":""735677896"",
""media"":""SMS""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/unsubscriptions", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""address"":""735677896"",
""media"":""SMS""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"address":"735677896",
"media":"SMS"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/unsubscriptions"
json := `{
"address":"735677896",
"media":"SMS"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
Format de réponse
- Status code : 201 Created
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | N/A | adresse non valide |
403 Forbidden | Forbidden | Vous n'avez pas les droits sur le groupe auquel vous souhaitez accèder |
14. Stratégies
Une stratégie de diffusion est l’ensemble des informations et règles définissant le comportement du système pour une diffusion donnée : choix et enchaînement des médias, durée de vie de campagne, conditions de succès, plage horaire etc...
La stratégie est définie en fonction du ou des médias sélectionnés, c’est-à-dire en mono-média ou en multimédia
Structure d'une stratégie
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant de la stratégie |
name | String | false | Le nom de la stratégie |
groupId | String | false | L'identifiant du groupe auquel est associée la stratégie |
lifetime | long | false | Durée de vie en minutes de la campagne. Sa valeur doit être comprise entre 10 et 4320 |
sequences | Sequence[] | false | Configuration des séquences d'envois |
smsMediaConfiguration | SmsMediaConfiguration | false | Configuration du média SMS |
emailMediaConfiguration | emailMediaConfiguration | false | Configuration du média EMAIL |
faxMediaConfiguration | faxMediaConfiguration | false | Configuration du média FAX |
voiceMediaConfiguration | voiceMediaConfiguration | false | Configuration du média VOCAL |
Sequence
Une séquence d’envoi permet de définir pour chaque destinataire l’ordre des médias et des éventuels rebonds vers une seconde coordonnée ou vers un autre média (sur échec ou sur durée de vie du message SMS atteinte par exemple).
Une séquence est une liste de point de communication (CommunicationPoint[])
CommunicationPoint
Les valeurs possibles sont : SMS_1
, SMS_2
, EMAIL
, FAX
, VOICE_CELL1
, VOICE_CELL2
, VOICE_FIXED1
, VOICE_FIXED2
.
MediaConfiguration
Les champs suivants sont partagés par tous les types de configurations
Champ | Type | Read-Only | Description |
---|---|---|---|
monday | Timeslot[] | false | Les créneaux d'envoi pour le lundi |
tuesday | Timeslot[] | false | Les créneaux d'envoi pour le mardi |
wednesday | Timeslot[] | false | Les créneaux d'envoi pour le mercredi |
thursday | Timeslot[] | false | Les créneaux d'envoi pour le jeudi |
friday | Timeslot[] | false | Les créneaux d'envoi pour le vendredi |
saturday | Timeslot[] | false | Les créneaux d'envoi pour le samedi |
sunday | Timeslot[] | false | Les créneaux d'envoi pour le dimanche |
Les champs suivant sont spécifiques à chaque type de configuration
SMS
Champ | Type | Read-Only | Description |
---|---|---|---|
lifetime | long | false | Durée de vie du message en minutes dans le réseau opérateur (doit être inférieure ou égal à la durée de vie de la campagne et compris entre 10 et 4320) |
linksTracking | boolean | false | Active/désactive le suivi des liens raccourcis |
Champ | Type | Read-Only | Description |
---|---|---|---|
linksTracking | boolean | false | Active/désactive le suivi des liens |
openingsTracking | boolean | false | Active/désactive le suivi des ouvertures |
VOCAL
Champ | Type | Read-Only | Description |
---|---|---|---|
Champ | Type | Read-Only | Description |
bodyAckDTMF | DTMF | false | Touche d'acquittement du corps du message |
introAckDTMF | DTMF | false | Touche d'acquittement de l'introduction |
bodyReplayDTMF | DTMF | false | Touche de réécoute du corps du message |
bodyAckCode | boolean | false | Active/désactive l'acquittement des messages via code personnel |
Timeslot
Les timeslots définissent les plages horaires pendant lesquels votre diffusion est active
Champ | Type | Read-Only | Description |
---|---|---|---|
start | String (HHmm ) |
false | Heure de début du créneau |
end | String (HHmm ) |
false | Heure de fin du créneau |
- Créer une stratégie
:id-group
/strategies
Ce point d'accès permet de créer une stratégie dans un groupe donné.
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [
[
"EMAIL"
]
],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\":\"stratégie 1\","
+ "\"lifetime\": 1440,"
+ "\"sequences\": ["
+ "["
+ "\"EMAIL\""
+ "]"
+ "],"
+ "\"emailMediaConfiguration\": {"
+ "\"monday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"tuesday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"wednesday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"thursday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"friday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"saturday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"sunday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"linksTracking\": false,"
+ "\"openingsTracking\": true"
+ "}"
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/strategies", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""stratégie 1"",
""lifetime"": 1440,
""sequences"": [
[
""EMAIL""
]
],
""emailMediaConfiguration"": {
""monday"": [{""start"": ""1200"", ""end"": ""1800""}],
""tuesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""wednesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""thursday"": [{""start"": ""1200"", ""end"": ""1800""}],
""friday"": [{""start"": ""1200"", ""end"": ""1800""}],
""saturday"": [{""start"": ""1200"", ""end"": ""1800""}],
""sunday"": [{""start"": ""1200"", ""end"": ""1800""}],
""linksTracking"": false,
""openingsTracking"": true
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/strategies", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""stratégie 1"",
""lifetime"": 1440,
""sequences"": [
[
""EMAIL""
]
],
""emailMediaConfiguration"": {
""monday"": [{""start"": ""1200"", ""end"": ""1800""}],
""tuesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""wednesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""thursday"": [{""start"": ""1200"", ""end"": ""1800""}],
""friday"": [{""start"": ""1200"", ""end"": ""1800""}],
""saturday"": [{""start"": ""1200"", ""end"": ""1800""}],
""sunday"": [{""start"": ""1200"", ""end"": ""1800""}],
""linksTracking"": false,
""openingsTracking"": true
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [["EMAIL"]],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies"
json := `{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [
[
"EMAIL"
]
],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name":"stratégie 1", "lifetime": 1440, "sequences": [ [ "EMAIL" ] ], "emailMediaConfiguration": { "monday": [{"start": "1200", "end": "1800"}], "tuesday": [{"start": "1200", "end": "1800"}], "wednesday": [{"start": "1200", "end": "1800"}], "thursday": [{"start": "1200", "end": "1800"}], "friday": [{"start": "1200", "end": "1800"}], "saturday": [{"start": "1200", "end": "1800"}], "sunday": [{"start": "1200", "end": "1800"}], "linksTracking": false, "openingsTracking": true } }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /strategies/:id-strategy |
Emplacement de la stratégie créée |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | Duplicate | Un ou plusieurs points de communications sont présent plus d'une fois |
400 BadRequest | NotConfigured | Un média présent dans une séquence n'est pas configuré. |
400 BadRequest | NotInSequences | Une configuration existe pour un média non présent dans les séquences. |
400 BadRequest | StartAfterEnd | La date de début d'une permission est après la date de fin. |
- Modifier une statégie
:id-group
/strategies/:id-strategy
Ce point d'accès permet de modifier une stratégie dans un groupe donné.
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_stategy]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [
[
"EMAIL"
]
],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_stategy]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\":\"stratégie 1\","
+ "\"lifetime\": 1440,"
+ "\"sequences\": ["
+ "["
+ "\"EMAIL\""
+ "]"
+ "],"
+ "\"emailMediaConfiguration\": {"
+ "\"monday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"tuesday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"wednesday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"thursday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"friday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"saturday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"sunday\": [{\"start\": \"1200\", \"end\": \"1800\"}],"
+ "\"linksTracking\": false,"
+ "\"openingsTracking\": true"
+ "}"
"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"":""stratégie 1"",
""lifetime"": 1440,
""sequences"": [
[
""EMAIL""
]
],
""emailMediaConfiguration"": {
""monday"": [{""start"": ""1200"", ""end"": ""1800""}],
""tuesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""wednesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""thursday"": [{""start"": ""1200"", ""end"": ""1800""}],
""friday"": [{""start"": ""1200"", ""end"": ""1800""}],
""saturday"": [{""start"": ""1200"", ""end"": ""1800""}],
""sunday"": [{""start"": ""1200"", ""end"": ""1800""}],
""linksTracking"": false,
""openingsTracking"": true
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"":""stratégie 1"",
""lifetime"": 1440,
""sequences"": [
[
""EMAIL""
]
],
""emailMediaConfiguration"": {
""monday"": [{""start"": ""1200"", ""end"": ""1800""}],
""tuesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""wednesday"": [{""start"": ""1200"", ""end"": ""1800""}],
""thursday"": [{""start"": ""1200"", ""end"": ""1800""}],
""friday"": [{""start"": ""1200"", ""end"": ""1800""}],
""saturday"": [{""start"": ""1200"", ""end"": ""1800""}],
""sunday"": [{""start"": ""1200"", ""end"": ""1800""}],
""linksTracking"": false,
""openingsTracking"": true
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [["EMAIL"]],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]"
json := `{
"name":"stratégie 1",
"lifetime": 1440,
"sequences": [
[
"EMAIL"
]
],
"emailMediaConfiguration": {
"monday": [{"start": "1200", "end": "1800"}],
"tuesday": [{"start": "1200", "end": "1800"}],
"wednesday": [{"start": "1200", "end": "1800"}],
"thursday": [{"start": "1200", "end": "1800"}],
"friday": [{"start": "1200", "end": "1800"}],
"saturday": [{"start": "1200", "end": "1800"}],
"sunday": [{"start": "1200", "end": "1800"}],
"linksTracking": false,
"openingsTracking": true
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-stategy | String | L'identifiant unique de la stratégie. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name":"stratégie 1", "lifetime": 1440, "sequences": [ [ "EMAIL" ] ], "emailMediaConfiguration": { "monday": [{"start": "1200", "end": "1800"}], "tuesday": [{"start": "1200", "end": "1800"}], "wednesday": [{"start": "1200", "end": "1800"}], "thursday": [{"start": "1200", "end": "1800"}], "friday": [{"start": "1200", "end": "1800"}], "saturday": [{"start": "1200", "end": "1800"}], "sunday": [{"start": "1200", "end": "1800"}], "linksTracking": false, "openingsTracking": true } }
- Status code : 200 OK
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la strategie à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | Duplicate | Un ou plusieurs points de communications sont présent plus d'une fois |
400 BadRequest | EmailStrategyNeededByAPIMultimediaStrategy | Le média email ne peut être retiré de cette stratégie car elle est utilisée comme stratégie email api |
400 BadRequest | EmailStrategyNeededByDefaultEmailStrategy | Le média email ne peut être retiré de cette stratégie car elle est utilisée comme stratégie email par défaut |
400 BadRequest | EmailStrategyNeededByDefaultMultimediaStrategy | Le média email ne peut être retiré de cette stratégie car elle est utilisée comme stratégie multimédia par défaut |
400 BadRequest | NotConfigured | Un média présent dans une séquence n'est pas configuré. |
400 BadRequest | NotInSequences | Une configuration existe pour un média non présent dans les séquences. |
400 BadRequest | SmsStrategyNeededByAPIMultimediaStrategy | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée comme stratégie multimédia api |
400 BadRequest | SmsStrategyNeededByAPISmsStrategy | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée comme stratégie SMS api |
400 BadRequest | SmsStrategyNeededByDefaultMultimediaStrategy | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée comme stratégie multimédia par défaut |
400 BadRequest | SmsStrategyNeededByDefaultSmsStrategy | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée comme stratégie SMS par défaut |
400 BadRequest | SmsStrategyNeededByLightApi | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée par l'api light |
400 BadRequest | SmsStrategyNeededByMail2Sms | Le média SMS ne peut être retiré de cette stratégie car elle est utilisée par l'interface mail |
400 BadRequest | VoiceStrategyNeededByLightApi | Le média vocal ne peut être retiré de cette stratégie car elle est utilisée par l'API light |
400 BadRequest | StartAfterEnd | La date de début d'une permission est après la date de fin. |
- Supprimer une stratégie
:id-group
/strategies/:id-strategy
Ce point d'accès permet de supprimer une stratégie d'un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-strategy | String | L'identifiant unique de la stratégie. |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la stratégie à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | StrategyUsedByAPIEmailStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée comme stratégie email api |
400 BadRequest | StrategyUsedByAPIMultimediaStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée comme stratégie multimédia api |
400 BadRequest | StrategyUsedByAPISmsStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée comme stratégie SMS api |
400 BadRequest | StrategyUsedByAPIFaxStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée comme stratégie fax api |
400 BadRequest | StrategyUsedByAPIVoiceStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée comme stratégie vocale api |
400 BadRequest | StrategyUsedByDefaultEmailStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par défaut sur l'interface web email |
400 BadRequest | StrategyUsedByDefaultMultimediaStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par défaut sur l'interface web multimedia |
400 BadRequest | StrategyUsedByDefaultSmsStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par défaut sur l'interface web sms |
400 BadRequest | StrategyUsedByDefaultFaxStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par défaut sur l'interface web fax |
400 BadRequest | StrategyUsedByDefaultVoiceStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par défaut sur l'interface web vocale |
400 BadRequest | StrategyUsedByLightApi | La stratégie ne peut pas être supprimée, car elle est utilisée par l'api light |
400 BadRequest | StrategyUsedByEmailInterfaceSmsStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par l'interface mail sms |
400 BadRequest | StrategyUsedByEmailInterfaceVoiceStrategy | La stratégie ne peut pas être supprimée, car elle est utilisée par l'interface mail vocale |
- Récupérer une stratégie
:id-group
/strategies/:id-strategy
Ce point d'accès permet de récupérer une stratégie dans un groupe donné, à partir de son identifiant.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/strategies/[id_strategy]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies/[id_strategy]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-strategy | String | L'identifiant unique de la stratégie. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name":"stratégie 1", "lifetime": 1440, "sequences": [ [ "EMAIL" ] ], "emailMediaConfiguration": { "monday": [{"start": "1200", "end": "1800"}], "tuesday": [{"start": "1200", "end": "1800"}], "wednesday": [{"start": "1200", "end": "1800"}], "thursday": [{"start": "1200", "end": "1800"}], "friday": [{"start": "1200", "end": "1800"}], "saturday": [{"start": "1200", "end": "1800"}], "sunday": [{"start": "1200", "end": "1800"}], "linksTracking": false, "openingsTracking": true } }
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la stratégie à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les stratégies
:id-group
/strategies
Ce point d'accès permet de lister toutes les stratégies d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/strategies", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/strategies", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/strategies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
[ { "id": "8249e746-f243-437d-afe7-47751dfb5996", "name":"stratégie 1", "lifetime": 1440, "sequences": [ [ "EMAIL" ] ], "emailMediaConfiguration": { "monday": [{"start": "1200", "end": "1800"}], "tuesday": [{"start": "1200", "end": "1800"}], "wednesday": [{"start": "1200", "end": "1800"}], "thursday": [{"start": "1200", "end": "1800"}], "friday": [{"start": "1200", "end": "1800"}], "saturday": [{"start": "1200", "end": "1800"}], "sunday": [{"start": "1200", "end": "1800"}], "linksTracking": false, "openingsTracking": true } }, { "id": "8249e746-f243-437d-afe7-47751dfb85z6", "name":"stratégie 2", "lifetime": 1440, "sequences": [ [ "EMAIL" ] ], "emailMediaConfiguration": { "monday": [{"start": "1200", "end": "1800"}], "tuesday": [{"start": "1200", "end": "1800"}], "wednesday": [{"start": "1200", "end": "1800"}], "thursday": [{"start": "1200", "end": "1800"}], "friday": [{"start": "1200", "end": "1800"}], "saturday": [{"start": "1200", "end": "1800"}], "sunday": [{"start": "1200", "end": "1800"}], "linksTracking": false, "openingsTracking": true } } ]
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
15. Modèle de diffusion
Un modèle de diffusion est une diffusion prédéfinie pouvant être chargée lors d'une demande de diffusion
Structure d'un modèle de diffusion
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
id | String | true | N/A | L'identifiant du modèle de diffusion |
name | String | false | false | Le nom du modèle de diffusion |
msisdns | String[] | false | false | Liste des numéros de mobile ciblés par la diffusion |
faxes | String[] | false | false | Liste des numéros de fax ciblés par la diffusion |
landlines | String[] | false | false | Liste des numéros de fixe ciblés par la diffusion |
emails | String[] | false | false | Liste des adresses emails ciblées par la diffusion |
mailingListIds | String[] | false | false | Identifiants des listes de diffusions utilisées par la diffusion |
categoryIds | String[] | false | false | Identifiants des catégories utilisées par la diffusion |
contactIds | String[] | false | false | Identifiants des contacts utilisés par la diffusion |
excludedContactIds | String[] | false | false | Identifiants des contacts à exclure (lors de l'utilisation d'une liste de diffusion) pour la diffusion |
strategyId | String | false | true | Identifiant de la stratégie à associer à la diffusion |
smsParam | SmsParam | false | false | Paramètres de l'envoi SMS |
emailParam | EmailParam | false | false | Paramètres de l'envoi EMAIL |
faxParam | FaxParam | false | false | Paramètres de l'envoi FAX |
voiceParam | VoiceParam | false | false | Paramètres de l'envoi vocal |
createdAt | Date | true | N/A | La date de création du modèle |
updatedAt | Date | true | N/A | La date de dernière mise à jour du modèle |
NB: Dans le cas d'un modèle de diffusion vocale, les champs msisdns
et landlines
sont indicatifs. Un numéro de mobile renseigné dans les landlines
sera facturé en tant que mobile,
et un numéro fixe renseigné dans msisdns
sera facturé en tant que fixe.
Utilisation d'un message prédéfini lors de la création/modification d'un modèle de diffusion
Il est possible d'utiliser un message prédéfini en utilisant le champ templateId
dans les objets SmsParam, EmailParam, FaxParam et VoiceParam.
Attention, les champs non nuls des objets xxxParam du modèle de diffusion écraseront les valeurs issues du message prédéfini (il est ainsi possible de n'utiliser qu'une partie d'un message prédéfini).
Le modèle de diffusion est alors créé avec les valeurs du message prédéfini, mais ne conserve pas de lien vers celui-ci. Le message prédéfini peut donc être modifié ou supprimé sans impact sur le modèle de diffusion.
- Créer un modèle de diffusion
:id-group
/diffusion-templates
Ce point d'accès permet de créer un modèle de diffusion dans un groupe donné.
Les modèles de type EMAIL, FAX et VOCAL peuvent être créés de deux manières:
- En positionnant les identifiants de fichiers préalablement téléversés dans les champs correspondants
- En envoyant les fichiers lors de la création du modèle au moyen d'une requête au format
multipart/form-data
, avec les parties suivantes:- partie
diffusionTemplate
(requise): définition du modèle au formatapplication/json
- partie
attachmentN
: fichiers utilisés comme pièces jointes pour les modèles EMAIL oùN
est le numéro du fichier (de 1 à 5) - parties
fax
,fax2
,fax3
,fax4
,fax5
: fichiers utilisés pour les modèles FAX - partie
audio-intro
: fichier audio utilisé pour l'introduction des modèles VOCAL - partie
audio-body
: fichier audio utilisé pour le corps des modèles VOCAL - partie
audio-outro
: fichier audio utilisé pour la conclusion des modèles VOCAL
- partie
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name": "template SMS",
"msisdns": ["+33611549692"],
"strategyId": "id_strategy",
"smsParam": {
"body": "test body sms",
"encoding": "GSM7",
"senderName": "senderName"
}
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\": \"template SMS\","
+ "\"msisdns\": [\"+33611549692\"],"
+ "\"strategyId\": \"id_strategy\","
+ "\"smsParam\": {"
+ "\"body\": \"test body sms\","
+ "\"encoding\": \"GSM7\","
+ "\"senderName\": \"senderName\""
+ "}"
+"}"
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-templates", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""template SMS"",
""msisdns"": [""+33611549692""],
""strategyId"": ""id_strategy"",
""smsParam"": {
""body"": ""test body sms"",
""encoding"": ""GSM7"",
""senderName"": ""senderName""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-templates ", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""template SMS"",
""msisdns"": [""+33611549692""],
""strategyId"": ""id_strategy"",
""smsParam"": {
""body"": ""test body sms"",
""encoding"": ""GSM7"",
""senderName"": ""senderName""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "template SMS",
"msisdns": ["+33611549692"],
"strategyId": "id_strategy",
"smsParam": {
"body": "test body sms",
"encoding": "GSM7",
"senderName": "senderName"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates"
json := `{
"name": "template SMS",
"msisdns": ["+33611549692"],
"strategyId": "id_strategy",
"smsParam": {
"body": "test body sms",
"encoding": "GSM7",
"senderName": "senderName"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "a8369d2a-fb39-4287-9540-a452e9cdb7be", "name": "template SMS", "msisdns": [ "+33611549692" ], "mailingListIds": [], "categoryIds": [], "contactIds": [], "excludedContactIds": [], "strategyId": "d38f29ff-0f4b-4a01-a3f7-33ac348fc879", "smsParam": { "senderName": "senderName", "encoding": "GSM7", "body": "test body sms" }, "createdAt": "2018-07-13T09:44:09.809+02:00", "updatedAt": "2018-07-13T09:44:09.809+02:00" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /diffusion-templates/:id-template |
Emplacement du modèle créé |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | MediaAbsentInStrategy | Le média sur lequel vous essayez de créer le modèle n'est pas présent dans la stratégie sélectionnée |
400 BadRequest | ConsistencyError | Des listes de diffusions ou contacts que vous avez sélectionnés n'appartiennent pas au groupe auquel vous tentez d'accéder |
400 BadRequest | BadFileType | Le format du document fax ou du contenu vocal n'est pas valide |
400 BadRequest | MaxFileSizeExceeded | La taille du document fax ou du contenu vocal dépasse la limite autorisée |
400 BadRequest | Invalid | La valeur du champ locale est invalide |
400 BadRequest | Invalid | Vous n'avez fourni ni contenu texte à vocaliser ni fichier audio pour le modèle vocal |
- Modifier un modèle de diffusion
:id-group
/diffusion-templates/:id-template
Ce point d'accès permet de modifier un modèle de diffusion dans un groupe donné.
Les modèles de type EMAIL, FAX et VOCAL peuvent être modifiés de deux manières:
- En positionnant les identifiants de fichiers préalablement téléversés dans les champs correspondants
- En envoyant les fichiers lors de la création du modèle au moyen d'une requête au format
multipart/form-data
, avec les parties suivantes:- partie
messageTemplate
(requise): définition du modèle au formatapplication/json
- partie
attachmentN
: fichiers utilisés comme pièces jointes pour les modèles EMAIL oùN
est le numéro du fichier (de 1 à 5) - parties
fax
,fax2
,fax3
,fax4
,fax5
: fichiers utilisés pour les modèles FAX - partie
audio-intro
: fichier audio utilisé pour l'introduction des modèles VOCAL - partie
audio-body
: fichier audio utilisé pour le corps des modèles VOCAL - partie
audio-outro
: fichier audio utilisé pour la conclusion des modèles VOCAL
- partie
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name": "template EMAIL",
"emails": ["monemail@orange.fr"],
"strategyId": "id_strategy",
"emailParam": {
"senderEmail": "sender@email.com",
"subject": "template",
"body": "Ceci est un template email"
}
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\": \"template EMAIL\","
+ "\"emails\": [\"monemail@orange.fr\"],"
+ "\"strategyId\": \"id_strategy\","
+ "\"emailParam\": {"
+ "\"senderEmail\": \"sender@email.com\","
+ "\"subject\": \"template\","
+ "\"body\": \"Ceci est un template email\""
+ "}"
+ "}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""template EMAIL"",
""emails"": [""monemail@orange.fr""],
""strategyId"": ""id_strategy"",
""emailParam"": {
""senderEmail"": ""sender@email.com"",
""subject"": ""template"",
""body"": ""Ceci est un template email""
}
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""template EMAIL"",
""emails"": [""monemail@orange.fr""],
""strategyId"": ""id_strategy"",
""emailParam"": {
""senderEmail"": ""sender@email.com"",
""subject"": ""template"",
""body"": ""Ceci est un template email""
}
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "template EMAIL",
"emails": ["monemail@orange.fr"],
"strategyId": "id_strategy",
"emailParam": {
"senderEmail": "sender@email.com",
"subject": "template",
"body": "Ceci est un template email"
}
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]"
json := `{
"name": "template EMAIL",
"emails": ["monemail@orange.fr"],
"strategyId": "id_strategy",
"emailParam": {
"senderEmail": "sender@email.com",
"subject": "template",
"body": "Ceci est un template email"
}
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du modèle. |
Format de réponse
Format de réponse
{ "id": "ed2b74c7-2243-432c-9077-e9528f49e2f7", "name": "template EMAIL", "emails": [ "monemail@orange.fr" ], "mailingListIds": [], "categoryIds": [], "contactIds": [], "excludedContactIds": [], "strategyId": "d38f29ff-0f4b-4a01-a3f7-33ac348fc879", "emailParam": { "senderEmail": "sender@email.com", "subject": "template", "body": "Ceci est un template email" }, "createdAt": "2018-07-13T10:27:07.568+02:00", "updatedAt": "2018-07-13T10:27:07.568+02:00" }
- Status code : 200 OK
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du modèle de diffusion auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | BadFileType | Le format du document fax ou du contenu vocal n'est pas valide |
400 BadRequest | MaxFileSizeExceeded | La taille du document fax ou du contenu vocal dépasse la limite autorisée |
400 BadRequest | Invalid | La valeur du champ locale est invalide |
400 BadRequest | Invalid | Vous n'avez fourni ni contenu texte à vocaliser ni fichier audio pour le modèle vocal |
- Supprimer un modèle de diffusion
:id-group
/diffusion-templates/:id-template
Ce point d'accès permet de supprimer un modèle de diffusion d'un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du modèle. |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du modèle de diffusion auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Récupérer un modèle de diffusion
:id-group
/diffusion-templates/:id-template
Ce point d'accès permet de récupérer un modèle de diffusion dans un groupe donné, à partir de son identifiant.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-templates/[id_template]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates/[id_template]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du modèle. |
Format de réponse
Format de réponse
{ "id": "b1c29944-ab0f-444e-a476-ed2bb30a7c48", "name": "template VOICE", "msisdns": [], "landlines": [ "+33557857493" ], "mailingListIds": [], "categoryIds": [], "contactIds": [], "excludedContactIds": [], "strategyId": "d38f29ff-0f4b-4a01-a3f7-33ac348fc879", "voiceParam": { "body": { "text": "ceci est un template voice" }, "locale": "fr_FR" }, "createdAt": "2018-07-13T10:45:58.529+02:00", "updatedAt": "2018-07-13T10:45:58.529+02:00" }
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du modèle auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les modèles de diffusion
:id-group
/diffusion-templates
Ce point d'accès permet de lister tous les modèles de diffusion d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/diffusion-templates", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/diffusion-templates", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/diffusion-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
[ { "id": "b1c29944-ab0f-444e-a476-ed2bb30a7c48", "name": "template VOICE", "msisdns": [], "landlines": [ "+33557857493" ], "mailingListIds": [], "categoryIds": [], "contactIds": [], "excludedContactIds": [], "strategyId": "d38f29ff-0f4b-4a01-a3f7-33ac348fc879", "voiceParam": { "body": { "text": "ceci est un template voice" }, "locale": "fr_FR" }, "createdAt": "2018-07-13T10:45:58.529+02:00", "updatedAt": "2018-07-13T10:45:58.529+02:00" }, { "id": "ab0b0f1c-e7f8-4e45-873d-16813ee1460b", "name": "template FAX", "mailingListIds": [], "categoryIds": [], "contactIds": [], "excludedContactIds": [], "strategyId": "d38f29ff-0f4b-4a01-a3f7-33ac348fc879", "createdAt": "2018-07-13T10:47:04.840+02:00", "updatedAt": "2018-07-13T10:47:04.840+02:00" } ]
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
16. Message prédéfini
Un message prédéfini est un message pouvant être chargé lors d'une demande de diffusion ou lors de l'édition d'un modèle de diffusion.
Un message prédéfini ne porte que sur un média à la fois
Structure d'un message prédéfini
Les champs listés ci-dessous sont communs à tous les médias.
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
id | String | true | N/A | L'identifiant du message prédéfini |
name | String | false | true | Le nom du message prédéfini |
media | Media | false | true | Le média sur lequel porte le message prédéfini |
Les champs listés ci-dessous sont spécifiques à chaque média et s'ajoutent aux champs listés ci-dessus
Structure d'un messages prédéfinis SMS
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
body | String | false | true | Le corps du message SMS |
urlToShorten | String | false | false | L'URL à raccourcir (cf Créer une diffusion SMS). Dans un contexte conversationnel cette donnée est ignorée |
landingPageParam | LandingPageParam | false | false | Les paramètres pour la génération d'une landing page (cf Créer une diffusion SMS) |
Structure d'un messages prédéfinis EMAIL
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
body | String | false | true | Le corps du message EMAIL |
attachmentIds | String[] | false | false | Les identifiants des pièces jointes de l'email (dans le cas de pièces jointes préalablement téléversées |
Structure d'un messages prédéfinis FAX
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
attachmentIds | String[] | false | false | Les identifiants des documents que vous souhaitez faxer (dans le cas documents préalablement téléversées |
Structure d'un messages prédéfinis VOCAL
Les contenus audio doivent soit être renseignés via les paramètres ci-dessous, soit être fournis au moyen d'une requête de type multipart/form-data
Champ | Type | Read-Only | Requis | Description |
---|---|---|---|---|
locale | String | false | true | La locale utilisée pour la synthèse vocale: fr_FR (France) ou en_GB (Royaume Uni) |
intro | AudioContent | false | false | Le contenu audio à jouer pour l'introduction du message |
body | AudioContent | false | true | Le contenu audio à jouer pour le corps du message |
outro | AudioContent | false | false | Le contenu audio à jouer pour la conclusion du message |
- Créer un message prédéfini
:id-group
/message-templates
Ce point d'accès permet de créer un message prédéfini dans un groupe donné.
Les messages prédéfinis de type EMAIL, FAX et VOCAL peuvent être créés de deux manières:
- En positionnant les identifiants de fichiers préalablement téléversés dans les champs correspondants
- En envoyant les fichiers lors de la création du message prédéfini au moyen d'une requête au format
multipart/form-data
, avec les parties suivantes:- partie
messageTemplate
(requis): définition du message prédéfini au formatapplication/json
- partie
attachmentN
: fichiers utilisés comme pièces jointes pour les messages prédéfinis EMAIL oùN
est le numéro du fichier (de 1 à 5) - partie
fax
: fichier utilisé pour les messages prédéfinis FAX - partie
audio-intro
: fichier audio utilisé pour l'introduction des messages prédéfinis VOCAL - partie
audio-body
: fichier audio utilisé pour le corps des messages prédéfinis VOCAL - partie
audio-outro
: fichier audio utilisé pour la conclusion des messages prédéfinis VOCAL
- partie
Format de requête
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name": "template sms",
"media": "SMS",
"body": "Ceci est un message SMS"
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\": \"template sms\","
+ "\"media\": \"SMS\","
+ "\"body\": \"Ceci est un message SMS\""
+ "}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/message-templates", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""template sms"",
""media"": ""SMS"",
""body"": ""Ceci est un message SMS""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/message-templates ", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""template sms"",
""media"": ""SMS"",
""body"": ""Ceci est un message SMS""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "template sms",
"media": "SMS",
"body": "Ceci est un message SMS"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates"
json := `{
"name": "template sms",
"media": "SMS",
"body": "Ceci est un message SMS"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template sms", "media": "SMS", "body": "Ceci est un message SMS" }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /message-template/:id-template |
Emplacement du message prédéfini créé |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | BadFileType | Le format du document fax ou du contenu vocal n'est pas valide |
400 BadRequest | MaxFileSizeExceeded | La taille du document fax ou du contenu vocal dépasse la limite autorisée |
400 BadRequest | Invalid | La valeur du champ locale est invalide |
400 BadRequest | Invalid | Vous n'avez fourni ni contenu texte à vocaliser ni fichier audio pour le message prédéfini vocal |
- Modifier un message prédéfini
:id-group
/message-templates/:id-template
Ce point d'accès permet de modifier un message prédéfini dans un groupe donné.
Les messages prédéfinis de type EMAIL, FAX et VOCAL peuvent être modifiés de deux manières:
- En positionnant les identifiants de fichiers préalablement téléversés dans les champs correspondants
- En envoyant les fichiers lors de la création du message prédéfini au moyen d'une requête au format
multipart/form-data
, avec les parties suivantes:- partie
messageTemplate
(requis): définition du message prédéfini au formatapplication/json
- partie
attachmentN
: fichiers utilisés comme pièces jointes pour les messages prédéfinis EMAIL oùN
est le numéro du fichier (de 1 à 5) - partie
fax
: fichier utilisé pour les messages prédéfinis FAX - partie
audio-intro
: fichier audio utilisé pour l'introduction des messages prédéfinis VOCAL - partie
audio-body
: fichier audio utilisé pour le corps des messages prédéfinis VOCAL - partie
audio-outro
: fichier audio utilisé pour la conclusion des messages prédéfinis VOCAL
- partie
Format de requête
Format de requête
curl -X PUT "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [Access-Token]" \
-d '{
"name": "template email",
"media": "EMAIL",
"body": "Ceci est un message SMS",
"attachements": ["id_attachment_1"]
}'
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{"
+ "\"name\": \"template email\","
+ "\"media\": \"EMAIL\","
+ "\"body\": \"Ceci est un message SMS\","
+ "\"attachements\": [\"id_attachment_1\"]"
+ "}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.PUT);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""name"": ""template email"",
""media"": ""EMAIL"",
""body"": ""Ceci est un message SMS"",
""attachements"": [""id_attachment_1""]
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.PUT)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""name"": ""template email"",
""media"": ""EMAIL"",
""body"": ""Ceci est un message SMS"",
""attachements"": [""id_attachment_1""]
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"name": "template email",
"media": "EMAIL",
"body": "Ceci est un message SMS",
"attachements": ["id_attachment_1"]
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]"
json := `{
"name": "template email",
"media": "EMAIL",
"body": "Ceci est un message SMS",
"attachements": ["id_attachment_1"]
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du message prédéfini. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template email", "media": "EMAIL", "body": "Ceci est un message SMS", "attachements": ["id_attachment_1"] }
- Status code : 200 OK
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du message prédéfini auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | NotEmpty | Un ou plusieurs champs obligatoires sont manquants dans votre objet |
400 BadRequest | BadFileType | Le format du document fax ou du contenu vocal n'est pas valide |
400 BadRequest | MaxFileSizeExceeded | La taille du document fax ou du contenu vocal dépasse la limite autorisée |
400 BadRequest | Invalid | La valeur du champ locale est invalide |
400 BadRequest | Invalid | Vous n'avez fourni ni contenu texte à vocaliser ni fichier audio pour le message prédéfini vocal |
- Supprimer un message prédéfini
:id-group
/message-templates/:id-template
Ce point d'accès permet de supprimer un message prédéfini d'un groupe donné.
Format de requête
Format de requête
curl -X DELETE \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("DELETE");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.DELETE);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.DELETE)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du message prédéfini. |
- Payload
N/A
Format de réponse
- Status code : 204 No Content
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du message auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Récupérer un message prédéfini
:id-group
/message-templates/:id-template
Ce point d'accès permet de récupérer un message prédéfini dans un groupe donné, à partir de son identifiant.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/message-templates/[id_template]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates/[id_template]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-template | String | L'identifiant unique du message prédéfini. |
Format de réponse
Format de réponse
{ "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template vocal", "media": "VOCAL", "intro": {"text": "ceci est l'introduction"}, "body": {"contentId": "id_fichier_audio"} }
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du message prédéfini auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les messages prédéfinis
:id-group
/message-templates
Ce point d'accès permet de lister tous les messages prédéfinis d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/message-templates", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/message-templates", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/message-templates"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
[ { "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template sms", "media": "SMS", "body": "Ceci est un message SMS" }, { "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template email", "media": "EMAIL", "body": "Ceci est un message Email", "attachements": ["id_attachment_1"] }, { "id": "8249e746-f243-437d-afe7-47751dfc6355f", "name": "template fax", "media": "FAX", "attachements": ["id_attachment_fax"] }, { "id": "8249e746-f243-437d-afe7-47751dfb5996", "name": "template vocal", "media": "VOCAL", "intro": {"text": "ceci est l'introduction"}, "body": {"contentId": "id_fichier_audio"} } ]
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
17. Fichiers téléversés
Un fichier téléversé est un fichier qui a été stocké sur le serveur de fichiers de l'application contact everyone.
Ils peuvent être utilisés lors de l'envoi d'une diffusion ou lors de la création d'un modèle.
Structure d'un fichier téléversé
Champ | Type | Read-Only | Description |
---|---|---|---|
id | String | true | L'identifiant du fichier |
name | String | true | Le nom du fichier |
url | String | true | L'url sur laquelle le fichier est disponible au téléchargement |
contentType | String | true | Le type du fichier |
size | Long | true | La taille du fichier en octet |
- Envoyer un fichier
:id-group
/attachments
Ce point d'accès permet de téléverser un fichier dans un groupe donné.
Format de requête
1 - Avec le contenu du fichier dans la requète :
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments" \
-H "Content-Type: multipart/form-data; boundary=MY_BOUNDARY" \
-H "Authorization: Bearer [Access-Token]" \
-d $'--MY_BOUNDARY\r
Content-Disposition: form-data; name="attachments"; filename="filename.txt"\r
Content-Type: text/plain\r
\r
my text file content\r
--MY_BOUNDARY--\r
'
2 - Avec les chemins vers les fichiers :
curl -X POST "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments" \
-H "Content-Type: multipart/form-data" \
-H "Authorization: Bearer [Access-Token]" \
-F attachments=@/path/to/file1.txt
-F attachments=@/path/to/file2.txt
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=MY_BOUNDARY");
con.setDoOutput(true);
String postJsonData = "--MY_BOUNDARY\r\n"
+ "Content-Disposition: form-data; name=\"attachments\"; filename=\"filename.txt\"\r\n"
+ "Content-Type: text/plain\r\n"
+ "\r\n"
+ "Hello World!"
+ "\r\n--MY_BOUNDARY\r\n"
+ "Content-Disposition: form-data; name=\"attachments\"; filename=\"filename.pdf\"\r\n"
+ "Content-Type: application/pdf\r\n"
+ "\r\n";
byte[] pdfDataAsBytes = Files.readAllBytes(Paths.get("/path/to/file.pdf"));
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.write(pdfDataAsBytes);
dataOutputStream.write("\r\n--MY_BOUNDARY--\r\n".getBytes(StandardCharsets.UTF_8));
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
1 - Avec le contenu du fichier dans la requète :
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/attachments", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "multipart/form-data; boundary=MY_BOUNDARY");
var body = @"--MY_BOUNDARY\r\n
Content-Disposition: form-data; name=""attachments""; filename=""filename.txt""\r\n
Content-Type: text/plain\r\n
\r\n
my text file content\r\n
--MY_BOUNDARY--\r\n";
request.AddParameter("text/plain", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
2 - Avec les chemins vers les fichiers :
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/attachments", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddFile("attachments", @"c:\myFirstFile.jpg", "image/jpg");
request.AddFile("attachments", @"c:\mySecondFile.txt", "plain/text");
IRestResponse r = client.Execute(request);
1 - Avec le contenu du fichier dans la requète :
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/attachments ", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "multipart/form-data; boundary=MY_BOUNDARY")
Dim body = "--MY_BOUNDARY\r\n
Content-Disposition: form-data; name=""attachments""; filename=""filename.txt""\r\n
Content-Type: text/plain\r\n
\r\n
my text file content\r\n
--MY_BOUNDARY--\r\n"
request.AddParameter("text/plain", body, ParameterType.RequestBody);
Dim response as IRestResponse = client.Execute(request)
2 - Avec les chemins vers les fichiers :
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/attachments ", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddFile("attachments", "c:\myFirstFile.jpg", "image/jpg")
request.AddFile("attachments", "c:\mySecondFile.txt", "plain/text")
Dim r as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: multipart/form-data; boundary=MY_BOUNDARY'
));
$content = '--MY_BOUNDARY\r
Content-Disposition: form-data; name="attachments"; filename="filename.txt"\r
Content-Type: text/plain\r
\r
my text file content\r
--MY_BOUNDARY--';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments"
json := `--MY_BOUNDARY\r\n
Content-Disposition: form-data; name="attachments"; filename="filename.txt"\r\n
Content-Type: text/plain\r\n
\r\n
my text file content\r\n
--MY_BOUNDARY--\r\n`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "multipart/form-data; boundary=MY_BOUNDARY")
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
Format de réponse
Format de réponse
{ "id": "f815ca23-4de4-4fa6-8e9a-ea418c981acc", "url": "http://localhost:8000/attachments/5b475c0cae480625c61839dd", "name": "filename.txt", "contentType": "text/plain", "size": 5925 }
- Status code : 201 Created
- Headers Response :
Header | Value | Description |
---|---|---|
Content-Type | application/json | Format de la donnée |
Location | /api/v1.2/groups/:id-group /attachments/:id-attachement |
Emplacement du fichier téléversé |
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder |
400 BadRequest | MaxFileSizeExceeded | La pièce jointe est trop grosse. Se référer à la documentation du média concerné pour connaître la taille maximale autorisée. |
- Récupérer un fichier téléversé
:id-group
/attachments/:id-attachment
Ce point d'accès permet de récupérer un fichier téléversé dans un groupe donné, à partir de son identifiant.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments/[id_attachment]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments/[id_attachment]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/attachments/[id_attachment]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/attachments/[id_attachment]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments/[id_attachment]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments/[id_attachment]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
id-attachment | String | L'identifiant unique du fichier. |
Format de réponse
Format de réponse
{ "id": "f815ca23-4de4-4fa6-8e9a-ea418c981acc", "url": "http://localhost:8000/attachments/5b475c0cae480625c61839dd", "name": "filename.txt", "contentType": "text/plain", "size": 5925 }
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant du fichier auquel vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
- Lister les fichiers téléversés
:id-group
/attachments
Ce point d'accès permet de lister tous les fichiers téléversés d'un groupe donné.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/groups/[id_group]/attachments", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/attachments", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/groups/[id_group]/attachments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
Parameter | Type | Description |
---|---|---|
id-group | String | L'identifiant unique du groupe. |
- Payload
N/A
Format de réponse
Format de réponse
[ { "id": "f815ca23-4de4-4fa6-8e9a-ea418c981acc", "url": "http://localhost:8000/attachments/5b475c0cae480625c61839dd", "name": "filename.txt", "contentType": "text/plain", "size": 5925 }, { "id": "f815ca23-4de4-4fa6-8e9a-ze9881ez", "url": "http://localhost:8000/attachments/5b475c0cae480625c61ez512a", "name": "filename2.txt", "contentType": "text/plain", "size": 5925 } ]
- Status code : 200 Ok
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
18. Emetteurs personnalisés
Lister les émetteurs personnalisés disponibles
:type
Ce point d'accès permet de récupérer les émetteurs personnalisés pour un type donné que vous pouvez utiliser pour :
- Associer à un groupe
- Associer à un subordonné
- Créer des emails personnalisés
Types possibles : OADC, EMAIL, DOMAIN, FAX, VOICE
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/custom-senders/[type]" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.2/custom-senders/[type]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/custom-senders/[type]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/custom-senders/[type]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.2/custom-senders/[type]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/custom-senders/[type]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
N/A
Format de réponse
Format de réponse
["monemail@domain.com", "monemail2@domain.com"]
- Status code : 200 Ok
- Response Body :
Renvoie une liste d'émetteurs personnalisés au format String
19 - Consulter le détail des messages
Le bilan des messages permet d'accéder à l'ensemble des messages envoyés par la plateforme, toutes diffusions confondues, ainsi que les réponses aux SMS entrants (si option), sur les 7 derniers mois.
Structure
Champ | Type | Description |
---|---|---|
messageId | String | L'identifiant du message |
diffusionId | String | L'identifiant de la diffusion présent uniquement pour une diffusion |
groupId | String | L'identifiant du groupe |
authorId | String | L'identifiant de l'auteur |
messageOrigin | MessageOrigin | L'origine du message |
address | String | L'adresse cible du message |
recipient | String | Destinataire du message |
media | Media | Le média sur lequel le message a été envoyé |
sentDate | String | Date d'envoi du message |
creationDate | Date | Date de création du message |
lastUpdateDate | Date | Date de dernière mise à jour du message |
status | Status | Statut du message |
cause | Cause | Cause du statut |
details | String | Détails sur la cause |
customId | String | L'identifiant personnalisé associé au destinataire présent uniquement à la demande |
MessageOrigin
Les valeurs suivantes sont possibles
DIFFUSION
: message envoyé depuis une campagneSMSPLUS_REPLY
: message envoyé en réponse à un SMS+ entrantSINGLE_MESSAGE
: message envoyé via une API bas niveau (SMPP)
Status
Les valeurs suivantes sont possibles
WAITING
: en attenteCANCELED
: annuléREJECTED
: rejetéUNREACHABLE
: injoignableINPROGRESS
: en coursFAILED
: échecSUCCESS
: succès
Cause
Les valeurs suivantes sont possibles
BLACKLISTED
: désinscritEMPTY_ADDRESS
: pas d'adresse joignableUNREACHABLE_ADDRESS
: coordonnée injoignableINVALID_ADDRESS
: coordonnée invalideDOM_NOT_ENABLED
: vos options ne vous permettent pas d'émettre vers les DROMUSA_NOT_ENABLED
: vos options ne vous permettent pas d'émettre vers les USAINTERNATIONAL_NOT_ENABLED
: vos options ne vous permettent pas d'émettre vers l'étrangerOVERCHARGED_NUMBER
: les numéros surtaxés ne sont pas autorisésQUOTA_REACHED
: quota du compte atteintEXPIRED
: expiréEXPIRED_DIFFUSION
: pas d'accusé de réception opérateurDROPPED
: pas d'accusé de réception opérateurDUPLICATE_ADDRESS
: doublonDELIVERED
: remis au destinataireSENT
: transmis à l'opérateurACK
: lu par le destinataireNO_ACK
: non acquittéNACK
: rejetéBUSY
: correspondant occupéNO_REPLY
: pas de réponse du correspondantNO_RING
: pas de tonalité
Récupérer le bilan des messages
Ce point d'accès permet de récupérer le bilan des messages
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api/v1.2/communications" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.2/communications");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
<?php
$url = "https://[SERVER_URL]/api/v1.2/communications";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api/v1.2/communications"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
var client = new RestClient("https://[SERVER_URL]/api/v1.2");
var request = new RestRequest("/communications", Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.2")
Dim request as RestRequest = new RestRequest("/communications", Method.GET)
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
- Query Parameters
Parameter | Type | Requis | Description |
---|---|---|---|
scrollId | String | false | Identifiant pour récupérer la suite des résultats (voir Déroulement des résultats) |
withCustomIds | Boolean | false | Inclure le champ customId dans les résultats |
Filtres
Il est possible de filtrer les résultats du bilan des messages à l'aide des paramètres ci-dessous
Champ | Type | Requis | Description |
---|---|---|---|
address | String | false | L'adresse à rechercher |
media | Media | false | Le média à rechercher |
dateMin | Date | false | La date de création minimale à rechercher |
dateMax | Date | false | La date de création maximale à rechercher |
lastUpdateDateMin | Date | false | La date de dernière mise à jour minimale à rechercher |
lastUpdateDateMax | Date | false | La date de dernière mise à jour maximale à rechercher |
authorIds | String[] | false | Les auteurs à rechercher |
groupIds | String[] | false | Les groupes à rechercher |
statuses | Status[] | false | Les statuts à rechercher |
causes | Cause[] | false | Les causes à rechercher |
emissionChannels | EmissionChannel[] | false | Les canaux d'emission à rechercher |
customId | String | false | L'identifiant personnalisé associé au destinataire |
Format de réponse
Format de réponse
{ "scrollId": "[scroll_id]", "content": [ { "messageId": "5b508d12df79be41bd585757#SMS_1", "diffusionId": "e10dcf62-57b1-4754-8776-3298cdb7b15e", "groupId": "0fafcea2-ce8f-4144-8701-25155d052238", "authorId": "3f4545ae-b98f-4758-8d4c-fa87a08a5f0a", "messageOrigin": "DIFFUSION", "address": "+33699328340", "media": "SMS", "sentDate": "2018-07-19T15:07:31.063+02:00", "creationDate": "2018-07-19T15:07:31.035+02:00", "lastUpdateDate": "2018-07-19T15:07:31.063+02:00", "status": "SUCCESS", "cause": "DELIVERED", "details":"Submitted", "smInfo": { "country":"FRA", "operatorCode":"FRTE", "msgCount":1 } }, { "messageId": "5b508d12df79be41bd585756#SMS_1", "diffusionId": "e10dcf62-57b1-4754-8776-3298cdb7b15e", "groupId": "0fafcea2-ce8f-4144-8701-25155d052238", "authorId": "3f4545ae-b98f-4758-8d4c-fa87a08a5f0a", "messageOrigin": "DIFFUSION", "address": "+33736710955", "media": "SMS", "sentDate": "2018-07-19T15:07:31.052+02:00", "creationDate": "2018-07-19T15:07:31.026+02:00", "lastUpdateDate": "2018-07-19T15:07:31.052+02:00", "status": "INPROGRESS", "cause": "SENT", "smInfo": { "msgCount":1 } }, { "messageId": "5b508d12df79be41bd585755#SMS_1", "diffusionId": "e10dcf62-57b1-4754-8776-3298cdb7b15e", "groupId": "0fafcea2-ce8f-4144-8701-25155d052238", "authorId": "3f4545ae-b98f-4758-8d4c-fa87a08a5f0a", "messageOrigin": "DIFFUSION", "address": "+33799584222", "media": "SMS", "sentDate": "2018-07-19T15:07:31.039+02:00", "creationDate": "2018-07-19T15:07:31.016+02:00", "lastUpdateDate": "2018-07-19T15:07:31.039+02:00", "status": "INPROGRESS", "cause": "SENT", "smInfo": { "msgCount":1 } } ] }
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la diffusion à laquelle vous tentez d'accéder n'existe pas |
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe ou l'objet auquel vous tentez d'accéder, ou l'objet n'appartient pas au groupe indiqué |
400 BadRequest | InvalidScrollId | L'identifiant de scroll fourni est invalide |
20. Conversationnel
Le Service SMS conversationnel est une plateforme conçue pour faciliter la communication entre une entreprise et ses usagers. Son objectif principal est de permettre une interaction bidirectionnelle continue et instantanée, créant ainsi une véritable conversation entre les deux parties.
La particularité de ce service réside dans le fait qu'une conversation peut être initiée soit par l'entreprise soit par l'usager lui-même. Cela signifie que les usagers ont la possibilité de prendre l'initiative de communiquer avec l'entreprise, renforçant ainsi l'accessibilité et l'engagement.
Cette solution permet à un utilisateur CEO Conversationnel d’envoyer des campagnes SMS à un groupe de destinataires, avec une limite configurable pouvant aller jusqu’à 1000 contacts par campagne. Cette limite est fixée par défaut à 1000, mais reste ajustable dynamiquement via un script, selon les droits associés au compte. Elle est appliquée côté API et reflétée dans l’interface utilisateur, garantissant une flexibilité optimale dans la gestion des interactions avec les destinataires.
Cela signifie que l'entreprise peut créer des messages interactifs et les diffuser à un ensemble d'usagers ou de prospects, favorisant ainsi une communication efficace et ciblée.
En résumé, le Service SMS conversationnel vise à établir une communication fluide et réactive entre une entreprise et ses usagers, en offrant la flexibilité nécessaire pour initier des conversations des deux côtés et la possibilité d'envoyer des messages interactifs à un large public. Il s'agit d'un outil puissant pour renforcer la relation client, améliorer l'engagement et promouvoir des campagnes ciblées.
- Structure d'un envoi de campagne conversationnelle
Champ | Type | Requis | Description |
---|---|---|---|
id | String | false | Identifiant de la campagne conversationnelle |
msisdns | []String | false | Liste des numéros sur lesquels la campagne est envoyée |
smsParam | ConversationalSmsParam | false | Numéro émetteur/encoding/body |
mailingId | String | false | Identifiant import/telechargement de contacts |
contactIds | []String | false | Les identifiants de contacts |
mailingListIds | []String | false | Les identifiants de liste de diffusion de contacts |
excludedContactIds | []String | false | Les identifiants des contacts exclus |
categoryIds | []String | false | Les identifiants des catégories incluses |
createdAt | Date | N/A (read only) | Date de création |
updatedAt | Date | N/A (read only) | Date de dernière modification |
scheduledDate | Date | false | Date d'envoi programmée |
ConversationalSmsParam
Ceci représente le numéro émetteur et le body qui contient le message envoyé dans la campagne. Dans le conversationnel, l'encoding est GSM7 ou UCS2.
Champ | Type | Requis | Description |
---|---|---|---|
conversationalSmsSender | String | true | Numéro émetteur |
body | String | false | Message envoyé dans la campagne |
templateId | String | false | Identifiant du message prédéfini à appliquer. Si une url raccourcie est positionnée dans le template de message, celle-ci sera ignorée. dans le cas des modèles de diffusion et des diffusions ce champ est utilisé en entrée, mais n'est jamais retourné |
encoding | String | true | Le charset utilisé pour l'envoi (GSM7 ou UCS2 ) |
La communication se poursuivra exclusivement en utilisant le format GSM7 ou UCS2 pour le reste de la conversation.
- Envoyer une campagne conversationnelle
:id-group
/conversations/messages
Ce point d'accès permet d' envoyer une campagne conversationnelle
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"msisdns": [
"+33600000000",
"0611111111",
"0622222222",
"0633333333",
"0644444444",
"0655555555"
],
"smsParam": {
"conversationalSmsSender": "0900000001",
"body": "Test envoi campagne",
"encoding": "GSM7"
}
}
'
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"msisdns\": [\"+33600000000\",\"0611111111\"],\"smsParam\": {\"conversationalSmsSender\": \"0900000001\",\"body\": \"Test envoi campagne\"}}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages"
method := "POST"
json := `{"msisdns": ["+33600000000","0611111111"],"smsParam": {"conversationalSmsSender": "0900000001","body": "Test envoi campagne"}}`
payload := strings.NewReader(json)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"msisdns": ["+33600000000","0611111111"],"smsParam": {"conversationalSmsSender": "0900000001","body": "Test envoi campagne"}}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var body = @"{""msisdns"": [""+33600000000"",""0611111111""],""smsParam"": {""conversationalSmsSender"": ""0900000001"",""body"": ""Test envoi campagne""}}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/messages", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{""msisdns"": [""+33600000000"",""0611111111""],""smsParam"": {""conversationalSmsSender"": ""0900000001"",""body"": ""Test envoi campagne""}}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
Format de réponse
Format de réponse
[ { "messageId": "12a6e2c4-e345-42ee-a3e3-fc2b7c1e1e37", "msisdn": "+33601010103" }, { "messageId": "4d4cd92a-19b8-4491-8095-3b0ab64d9e6d", "msisdn": "+33601010101" }, { "messageId": "0196cce3-a005-44c4-a965-20700e033c62", "contactId": "cf04690d-2ec9-4ba0-a466-6e88209b7ba9", "msisdn": "+33601010102" } ]
- Status code : 200 OK
- Response Body : Une liste d'objets, chacun contenant un messageId, un msisdn, et, si présent, un contactId..
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | SenderNumberAndCVONotAssociated | Ce numéro d'émetteur n'est pas associé à ce CVO |
400 BadRequest | InactiveAffectedContract | Votre contrat est inactif. |
400 BadRequest | TooManyContacts | Trop de contacts dans le champ identifié par field pour une conversation active. La limite maximale (par défaut 1000) est définie pour chaque CVO. |
400 BadRequest | InvalidPhoneNumberFormat | Il y a des erreurs de format dans le champ identifié par field dans les numéros de téléphone des destinataires. |
400 BadRequest | DiffusionContactMissing | Au moins un contact est manquant |
400 BadRequest | SendDateExpired | La date du calendrier de diffusion doit être postérieure à maintenant. |
400 BadRequest | SendDateTooFar | La date du calendrier de diffusion doit être comprise dans les 6 prochains mois. |
400 BadRequest | NotEmpty | Le champ identifié par field est obligatoire. |
400 BadRequest | SmsTooLong | Le champ identifié par field qui représente le corps du SMS est trop long. |
400 BadRequest | MissingEncoding | L'encodage du message SMS doit être spécifié. Il peut prendre les valeurs : "GSM7" ou "UCS2" |
403 Forbidden | N/A | Vous n'avez pas les droits d'accéder. |
- Structure d'envoi d'un message unitaire
Champ | Type | Requis | Description |
---|---|---|---|
body | String | true | Message envoyé dans la campagne |
encoding | String | false | Le charset utilisé pour l'envoi (GSM7 ou UCS2 ) |
Si le champ encoding n'est pas renseigné, il prendra par défaut la valeur GSM7.
- Envoyer un message unitaire
:id-group
/conversations/:id-conversation
/messages
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/messages" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"body": "Message envoyé dans la conversation",
"encoding": "GSM7"
}
'
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/messages");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"body\": \"Message envoyé dans la conversation\", \"encoding\": \"GSM7\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/[id_conversation]/messages", Method.POST);
request.AddHeader("Authorization", "Bearer [access-token]");
request.AddHeader("Content-Type", "application/json");
var json = @"{
""body"":""Message envoyé dans la conversation"",
""encoding"":""GSM7""
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/[id_conversation]/messages", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{
""body"":""Message envoyé dans la conversation"",
""encoding"":""GSM7""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/messages";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
));
$content='{
"body":"Message envoyé dans la conversation",
"encoding":"GSM7"
}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/messages"
json := `{
"body":"Message envoyé dans la conversation",
"encoding":"GSM7"
}`
payload := strings.NewReader(json)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer [access-token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_conversation | String | L'identifiant de la conversation |
Format de réponse
Format de réponse
{ "messageId": "8ccd0188-03ff-498f-a8b9-7eca025eb3c4", "msisdn": "+33601010188" }
- Status code : 200 OK
- Response Body : Un objet contenant un messageId et un msisdn.
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
400 BadRequest | NotEmpty | Le champ identifié par field est obligatoire. |
404 NotFound | N/A | La Conversation n'a pas été trouvée |
- Récupérer la liste des aperçus des conversations
:id-group
/conversations/previews
Ce point d'accès permet de récupérer la liste paginée des aperçus de conversations associées à un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]//api-conversational/v1.2/groups/[id_group]/conversations/previews" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/previews");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/previews"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/previews";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/previews", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/previews", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
- Query Parameters
Parameter | Type | Description |
---|---|---|
search |
String | Texte de recherche. Ce paramètre permet de filtrer par contactName ou par contactNumber |
Format de réponse
Format de réponse
{ "content": [ { "id": "64c8fa5c2be7fad96c254748", "contactName": "John DOE", "senderNumber": "+33900000012", "contactNumber": "+33611111111", "lastMessagePreview": "Envoi unitaire API", "lastMessageDate": "2023-08-04T13:31:30Z", "lastMessageDirection": "P2A" "lastTag": "TO_DO" }, { "id": "64ca0f802be7fad96c254777", "contactName": "Jeanne DOE", "senderNumber": "+33900000012", "contactNumber": "+33611111111", "lastMessagePreview": "test", "lastMessageDate": "2023-08-02T08:10:40Z", "lastMessageDirection": "A2P" "lastTag": "IN_PROGRESS" } ], "last": true, "totalElements": 2, "totalPages": 1, "numberOfElements": 2, "first": true, "size": 5, "number": 1 }
- Status code : 200 OK
- Response Body : Renvoie une liste paginée contenant les aperçus des conversations liées à un groupe.
Filtres
Il est possible de filtrer les résultats des aperçus des conversations à l'aide du paramètre d'URL ci-dessous.
Champ | Type | Description |
---|---|---|
search | string | Texte de recherche. Ce paramètre permet de filtrer par contactNumber ou par une partie du contactName |
Par exemple, la requête ci-dessous renvoie les aperçus des conversations ayant un contactName qui contientjohn
.
curl -X GET "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/previews?search=john"
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Accès refusé, compte non conversationnel. |
404 NotFound | N/A | Le groupe demandé n'existe pas ou a été supprimé. |
- Récupérer les messages d'une conversation
:id-group
/conversations/:id-conversation
Ce point d'accès permet de récupérer la liste paginée des messages d'une conversation associée à un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/[id_conversation]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/[id_conversation]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_conversation | String | L'identifiant de la conversation |
Format de réponse
Format de réponse
{ "id": "64c8fa5c2be7fad96c254748", "contactName": "", "contactNumber": "+33611111111", "senderNumber": "0911111111", "unreachable" : false, "unsubscribed" : false, "messages": { "content": [ { "id": "0db29c6c-5bff-488f-9f7a-c5948410a64d", "body": "message simple", "messageDate": "2024-06-28T21:01:43Z", "messageAuthor": "John doe", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted", "encoding": "GSM7" }, { "id": "0126a03f9e2b4e69bf547d66998e0722", "body": "Envoi msg unitaire", "messageDate": "2023-06-14T12:34:56Z", "messageAuthor": " ", "direction": "P2A", "encoding": "GSM7" }, { "id": "65efad73-45bc-4518-83c9-7198fadf8bbd", "body": "message simple 2", "messageDate": "2024-07-16T14:59:15Z", "messageAuthor": "John doe", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted", "encoding": "GSM7" }, { "id": "e7cbf92d-88c4-4298-a990-915dc22c5aeb", "body": "message simple 3", "messageDate": "2024-07-16T14:59:32Z", "messageAuthor": "John doe", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted", "encoding": "GSM7" }, { "id": "241c59df-15f6-47f0-89cc-860ee44dc1e2", "body": "message simple 4", "messageDate": "2024-07-17T19:22:59Z", "messageAuthor": "John doe", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted", "encoding": "GSM7" } ], "last": false, "totalElements": 36, "totalPages": 8, "numberOfElements": 5, "first": true, "size": 5, "number": 1 } ] }
- Status code : 200 OK
- Response Body : Renvoie une liste paginée des messages d'une conversation associée à un groupe.
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | L'identifiant de la conversation n'existe pas |
- Récupérer la liste des conversations
:id-group
/conversations
Ce point d'accès permet de récupérer la liste paginée des conversations associées à un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]//api-conversational/v1.2/groups/[id_group]/conversations" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(String(body))
}
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
Format de réponse
Format de réponse
{ "content": [ { "id": "659d5eb7f02565f7880f1c88", "contactName": "John DOE", "contactNumber": "+33601010186", "senderNumber": "0900000002", "unreachable": false, "unsubscribed": false, "messages": [ { "id": "95a125ac-181f-4a5e-b81b-06ed0d019c5f", "body": "Bonjour", "messageDate": "2024-01-09T14:56:55Z", "messageAuthor": "Daniel Plante", "direction": "A2P", "status": "INPROGRESS", "cause": "SENT" }, { "id": "9cba799b-17db-424f-b35a-a88a38c8de51", "body": "Salut", "messageDate": "2024-01-09T15:40:27Z", "messageAuthor": "Daniel Plante", "direction": "A2P", "status": "INPROGRESS", "cause": "SENT" }, ] }, { "id": "65a7ec5f0983d6afbb217d5f", "contactName": "Jeanne DOE", "contactNumber": "+33601010188", "senderNumber": "0900000001", "unreachable": false, "unsubscribed": true, "messages": [ { "id": "95a125ac-181f-4a5e-b81b-06ed0d019c5f", "body": "Bonsoir", "messageDate": "2024-01-17T15:03:58Z", "messageAuthor": "Daniel Plante", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted" } ] } ], "last": false, "totalElements": 2, "totalPages": 1, "numberOfElements": 2, "first": true, "size": 5, "number": 1 }
- Status code : 200 Ok
- Response Body : Renvoie une liste paginée des conversations associées à un groupe.
Filtres
Il est possible de filtrer les résultats de la recherche à l'aide des paramètres d'URL ci-dessous.
Parameter | Type | Requis | Description |
---|---|---|---|
startDate | date | false | La conversation inclue au moins un message avec une date ultérieure |
endDate | date | false | La conversation inclue au moins un message avec une date antérieure |
msisdn | String | false | Le numéro mobile du destinataire de la conversation |
senderNumber | String | false | Le numéro de l'émetteur de la conversation |
pageSize | int | false | Nombre d'éléments contenus par page |
pageNumber | int | false | Page que vous souhaitez visualiser |
Les dates sont formattées au format suivant : "yyyy-MM-dd'T'HH:mm:ss'Z'"
.
Le caractére +
du msisdn doit être encodé en %2B
.
Par exemple, la requête ci-dessous recherche les conversations avec le numéro de l'émetteur 0900000001
, le numéro du destinataire +33601010188
, et la date de début2024-02-05T08:49:00Z
.
curl -X GET "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations?senderNumber=0900000001&msisdn=%2B33601010188&startDate=2024-02-05T08:49:00Z
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Récupérer la liste des messages de toutes les conversations d’un groupe
:id-group
/conversations/messages
Ce point d'accès permet de récupérer la liste paginée des messages de toutes les conversations d'un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]//api-conversational/v1.2/groups/[id_group]/conversations/messages" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/messages", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/messages", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(String(body))
}
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
Format de réponse
Format de réponse
{ "content": [ { "conversationId": "65a7ec5f0983d6afbb217d5f", "contactName": "Jeanne DOE", "contactNumber": "+33601010188", "senderNumber": "0900000001", "id": "95a125ac-181f-4a5e-b81b-06ed0d019c5f", "body": "Bonsoir", "date": "2024-01-17T15:03:58Z", "author": "Daniel Plante", "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted" }, { "conversationId": "659d5eb7f02565f7880f1c88", "contactName": "John DOE", "contactNumber": "+33601010186", "senderNumber": "0900000002", "id": "95a125ac-181f-4a5e-b81b-06ed0d019c5f", "body": "Bonjour", "date": "2024-01-09T16:56:55Z", "author": "Daniel Plante", "direction": "A2P", "status": "INPROGRESS", "cause": "SENT" }, { "conversationId": "659d5eb7f02565f7880f1c88", "contactName": "John DOE", "contactNumber": "+33601010186", "senderNumber": "0900000002", "id": "9cba799b-17db-424f-b35a-a88a38c8de51", "body": "Salut", "date": "2024-01-09T15:40:27Z", "author": "Daniel Plante", "direction": "A2P", "status": "INPROGRESS", "cause": "SENT" } ], "last": true, "totalElements": 3, "totalPages": 1, "numberOfElements": 3, "first": true, "size": 5, "number": 1 }
- Status code : 200 Ok
- Response Body : Renvoie une liste paginée des messages de toutes les conversations associées à un groupe.
Filtres
Il est possible de filtrer les résultats de la recherche à l'aide des paramètres d'URL ci-dessous.
Parameter | Type | Requis | Description |
---|---|---|---|
startDate | date | false | La date du message est une date ultérieure |
endDate | date | false | La date du message est une date antérieure |
msisdn | String | false | Le numéro mobile du destinataire du message |
senderNumber | String | false | Le numéro de l'émetteur du message |
pageSize | int | false | Nombre de messages contenus par page |
pageNumber | int | false | Page que vous souhaitez visualiser |
Les dates sont formattées au format suivant : "yyyy-MM-dd'T'HH:mm:ss'Z'"
.
Le caractére +
du msisdn doit être encodé en %2B
.
Par exemple, la requête ci-dessous recherche les messages des conversations avec le numéro de l'émetteur 0900000001
, le numéro du destinataire +33601010188
, et la date de début2024-02-05T08:49:00Z
.
curl -X GET "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages?senderNumber=0900000001&msisdn=%2B33601010188&startDate=2024-02-05T08:49:00Z
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits sur le groupe auquel vous tentez d'accéder |
- Récupérer un message d'une conversation
:id-group
/conversations/messages/:id-message
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages/[id_message]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages/[id_message]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages/[id_message]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/messages/[id_message]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/messages/[id_message]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/messages/[id_message]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_message | String | L'identifiant du message |
Format de réponse
Format de réponse
{ "id": "bf25935215db473bbfba0ce6752dee7f", "mainCvo": "CVOSI19224216", "conversationId": "6580164a42e785156ea09676", "contactName": "John DOE", "contactNumber": "+33601010101", "senderNumber": "0900000002", "groupId": "21497ac0-9d41-4153-a006-0b66fb309719", "body": "Hello", "date": "2023-12-18T09:52:09Z", "author": { "id": "cce5e83a-c61c-4ee9-9705-c360abd9ee49", "firstName": "Daniel", "lastName": "Plante" }, "direction": "A2P", "status": "SUCCESS", "cause": "DELIVERED", "details": "Submitted" }
- Status code : 200 OK
- Response Body : Renvoie un message d'une conversation associée à un groupe.
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
404 NotFound | N/A | Le message n'existe pas |
- Récupérer les statistiques
Ce point d'accès permet d'obtenir les statistiques tableau visibles par l'utilisateur.
Format de requête
Format de requête
curl -X GET "https://[SERVER_URL]/api-conversational/v1.2/statistics/messages" \
-H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/statistics/messages");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("cache-control", "no-cache");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/statistics/messages", Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Authorization", "Bearer [Access-Token]");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/statistics/messages", Method.GET)
request.AddHeader("cache-control", "no-cache")
request.AddHeader("Authorization", "Bearer [Access-Token]")
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/statistics/messages";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]',
'Cache-Control' => 'no-cache',
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/statistics/messages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
- Query Parameters
N/A
- Payload
N/A
Filtres
Les statistisques sont filtrés à l'aide des paramètres d'URL ci-dessous.
Champ | Type | Obligatoire ? | Description |
---|---|---|---|
from | Date | oui | Date de début |
to | Date | oui | Date de fin |
Par exemple, la requête ci-dessous demande les statistiques tableau sur les messages :
- envoyés entre le 26 avril 2017 à 20h00 et le 27 avril 2017 à 20h00
curl -X GET "https://[SERVER_URL]/api-conversational/v1.2/statistics/messages?from=2017-04-26T20:00:00.000Z&to=2017-04-27T20:00:00.000Z"
Format de réponse
Format de réponse
[ { "mainCvo": "CVOSI00000001", "entityCvo": "CVOSI00000001", "mtNumber": "0900000002", "moNumber": "+33000000001", "direction": "A2P", "messageDate": "2023-10-18T10:48:00Z", "encoding": "GSM7", "state": "Success", "cause": "Delivered", "details": "Submitted", "emissionChannel": "WEB", "billingType": "OSA tech", "categories": "category1,category2", "numberOfMessages": 1 }, { "mainCvo": "CVOSI00000001", "entityCvo": "CVOSI00000001", "mtNumber": "0900000002", "moNumber": "+33000000001", "direction": "P2A", "messageDate": "2023-10-18T10:48:02Z", "encoding": "", "state": "", "cause": "", "details": "", "emissionChannel": "", "billingType": "OSA tech", "categories": "", "numberOfMessages": 1 } ]
- Status code : 200 Ok
- Response Body : Renvoie une liste contenant des messages.
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Le conversationnel n'est pas disponible |
403 Forbidden | N/A | Accès refusé |
400 BadRequest | NotNull | Le filtre indiqué par la propriété "field" dans le message d'erreur est obligatoire |
- Récuperer numéros emétteurs d'un groupe
:id-group
Ce point d'accès permet d'obtenir les numéros emétteurs d'un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api-conversational/v1.2/sender-configuration/groups/[id_group]" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/sender-configuration/groups/[id_group]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/sender-configuration/groups/[id_group]]"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/sender-configuration/groups/[id_group]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/sender-configuration/groups/[id_group]", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("sender-configuration/groups/[id_group]", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
Format de réponse
Format de réponse
[ { "id": "8e9abe6a-3303-11ef-b6a4-0242ac110003", "mainCvo": "CVOSI19224216", "phoneNumber": "0900000002", "groupId": "be251bc2-7aa2-4562-8c00-4c35149d0391" }, { "id": "8ea356fd-3303-11ef-b6a4-0242ac110003", "mainCvo": "CVOSI19224216", "phoneNumber": "0900000003", "groupId": "be251bc2-7aa2-4562-8c00-4c35149d0391" } ]
- Status code : 200 OK
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Vous n'avez pas les droits d'accéder. |
- Structure d'association d'un tag à une conversation
Champ | Type | Requis | Description |
---|---|---|---|
tag | String | true | Tag à associer à la conversation (TO_DO , IN_PROGRESS ou FINISHED ) |
- Associer un tag à une conversation
:id-group
/conversations/:id-conversation
/tags
Ce point d'accès permet d'ajouter un tag à une conversation. Les tags acceptés : TO_DO (À FAIRE), IN_PROGRESS (EN COURS), FINISHED (TERMINÉ)
Format de requête
Format de requête
curl -X POST \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/tags" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json" \
-d '
{
"tag": "IN_PROGRESS"
}
'
URL url = new URL("[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/tags");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setDoOutput(true);
String postJsonData = "{\"tag\": \"IN_PROGRESS\"}";
DataOutputStream dataOutputStream = new DataOutputStream(con.getOutputStream());
dataOutputStream.write(postJsonData.getBytes(StandardCharsets.UTF_8));
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/tags"
method := "POST"
json := `{"tag": "IN_PROGRESS"}`
payload := strings.NewReader(json)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/tags',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{"tag": "IN_PROGRESS"}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer [Access-Token]',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/tags");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
var body = @"{""tag"": ""IN_PROGRESS""}";
request.AddParameter("application/json", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/[id_conversation]/tags", Method.POST)
request.AddHeader("Authorization", "Bearer [access-token]")
request.AddHeader("Content-Type", "application/json")
Dim json = "{""tag"": ""IN_PROGRESS""}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_conversation | String | L'identifiant de la conversation |
Format de réponse
Format de réponse
[ { "id": "ea638e7d-3a4c-4490-8894-10da5e5fa5b6", "status": "IN_PROGRESS", "date": "2025-01-15T10:38:19+01:00" } ]
- Status code : 201 Created
- Response Body : Un objet tag contenant un id, un status et une date
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Accès refusé, compte non conversationnel. |
404 NotFound | N/A | La conversation demandée n'existe pas. |
404 NotFound | N/A | Le groupe demandé n'existe pas ou a été supprimé. |
400 BadRequest | N/A | Le tag fourni n'est pas valide. |
400 BadRequest | N/A | Le tag fourni est déjà activé pour la conversation. |
- Récupérer les événements d'une conversation
:id-group
/conversations/:id-conversation
/events
Ce point d'accès permet de récupérer la liste paginée des événements d'une conversation associée à un groupe.
Format de requête
Format de requête
curl -X GET \
"https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/events" \
-H "Authorization: Bearer [Access-Token]" \
-H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/events");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", "Bearer [Access-Token]");
con.setRequestProperty("Content-Type", "application/json");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String output;
StringBuilder response = new StringBuilder();
while ((output = in.readLine()) != null){
response.append(output);
}
in.close();
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer [Access-Token]")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(body)
}
<?php
$url = "https://[SERVER_URL]/api-conversational/v1.2/groups/[id_group]/conversations/[id_conversation]/events";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer [Access-Token]'
));
$head = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpCode . "\r\n";
var_dump($head);
?>
var client = new RestClient("https://[SERVER_URL]/api-conversational/v1.2");
var request = new RestRequest("/groups/[id_group]/conversations/[id_conversation]/events", Method.GET);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
IRestResponse response = client.Execute(request);
Dim client as RestClient = new RestClient("https://[SERVER_URL]/api-conversational/v1.2")
Dim request as RestRequest = new RestRequest("/groups/[id_group]/conversations/[id_conversation]/events", Method.GET)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
Dim response as IRestResponse = client.Execute(request)
- Path Parameters
Parameter | Type | Description |
---|---|---|
id_group | String | L'identifiant du groupe concerné |
id_conversation | String | L'identifiant de la conversation |
Format de réponse
Format de réponse
{ "conversationID": "67d1871903a17d1a3009eb0c", "contactNumber": "+33658111986", "senderNumber": "0900000003", "unreachable": false, "unsubscribed": false, "lastTag": "IN_PROGRESS", "events": { "content": [ { "tag": { "TagId": "19771482-720a-4899-b814-a56923d754b7", "status": "IN_PROGRESS", "date": "2025-03-13T10:13:02.744Z" } }, { "tag": { "TagId": "5f793726-1eb6-418e-81df-466167928c7b", "status": "TO_DO", "date": "2025-03-13T10:16:46.794Z" } }, { "message": { "id": "b0790296-4ab8-430b-828c-3eda0be1329d", "body": "Hello", "messageDate": "2025-03-12T17:07:37Z", "messageAuthor": "John Doe", "direction": "A2P", "status": "INPROGRESS", "cause": "SENT", "encoding": "GSM7" } } ], "last": true, "totalElements": 8, "totalPages": 2, "numberOfElements": 3, "first": true, "size": 5, "number": 2 } }
- Status code : 200 OK
- Response Body : Renvoie une liste paginée des événements d'une conversation associée à un groupe.
Erreurs possibles
Status HTTP | Code d'erreur | Description |
---|---|---|
403 Forbidden | N/A | Accès refusé, compte non conversationnel. |
404 NotFound | N/A | La conversation demandée n'existe pas. |
404 NotFound | N/A | Le groupe demandé n'existe pas ou a été supprimé. |