NAV Navbar
cURL Java C# (.NET) vb (.NET) PHP Go

Version Obsolete

La version 1.1 de l'API REST Contact Everyone est obsolète et ne doit plus être utilisée.
Merci d'utiliser la version 1.2.

Vous pouvez sélectionner la documentation de la version 1.2 via le menu à gauche.

Changements depuis la v1

Cette nouvelle version est simplement une mise à jour de la v1 avec format de date différent en sortie, interprété par défaut par une majorité de language :

0. Prise en main

La solution complète pour vos diffusions SMS et e-mails

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 et e-mails en quelques clics via son application en ligne, d'alerter vos clients par SMS et consulter les statistiques de remise et les réponses de vos clients.

Par ailleurs, la plateforme Contact-Everyone propose

Protocole de connexion sécurisée

Vos applicatifs doivent se connecter en HTTPS en utilisant le protocole TLS 1.2.

Vous ne devez pas utiliser les protocoles TLS 1.0 et TLS 1.1, qui sont dépréciés.

Le support du protocole TLS 1.3 n'est pas encore disponible sur Contact Everyone.

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.

POST /api/v1.1/oauth/token

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

Format de requête

Format de requête

curl -X POST 'https://[SERVER_URL]/api/v1.1/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.1/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.1/oauth/token");
var request = new RestRequest(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.1/oauth/token")
dim request as RestRequest = new RestRequest(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.1/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.1/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.1/oauth/token

Déconnexion

Format de requête

curl -X GET "https://[SERVER_URL]/api/v1.1/logout" \
    -H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1/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.1/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.1/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.1/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.

GET /api/v1.1/logout

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.1/groups" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
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.1");
var request = new RestRequest("/groups",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.1")
dim request as RestRequest = new RestRequest("/groups",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.1/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.1/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.

GET /api/v1.1/groups

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.1/groups/[id-group]/diffusion-requests" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]" \
    -d '{
          "msisdns":["+33693847755", "0764536453", "+447564110766"],
              "smsParam":{
                 "encoding" : "GSM7",
                 "body":"mon body SMS"
              }
        }'
URL url = new URL("https://[SERVER_URL]/api/v1.1/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 = "{"+
    "\"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.1");
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.1")
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.1/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.1/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.

POST /api/v1.1/groups/: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.1/groups/[id-group]/contacts/[id-diffusion]" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id-group]/contacts/[id-diffusion]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
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.1");
var request = new RestRequest("/groups/[id-group]/contacts/[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.1")
dim request as RestRequest = new RestRequest("/groups/[id-group]/contacts/[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.1/groups/[id-group]/contacts/[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.1/groups/[id-group]/contacts/[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))
}

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.

GET /api/v1.1/diffusions/: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.1

Format et entêtes HTTP

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

GET /api/v1.1/groups/:id-group/replies?pageNumber=2&pageSize=8

- 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
Email 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 dépassants 160 caractères en GSM, ou dépassants 70 en UNICODE, seront découpés et facturés en plusieurs SMS, selon le tableau ci-dessous :

jeu de caractère usage Marketing + perso du numéro émetteur nombre de caractères nombre de SMS facturés
GSM non de 1 à 160 inclus 1
GSM non de 161 à 306 inclus 2
GSM non de 307 à 459 inclus 3
GSM non de 460 à 612 inclus 4
GSM non de 613 à 765 inclus 5
GSM non de 766 à 918 inclus 6
GSM non de 919 à 1071 inclus 7
GSM non de 1072 à 1224 inclus 8
GSM non de 1225 à 1377 inclus 9
GSM non de 1378 à 1530 inclus 10
UNICODE non de 1 à 70 inclus 1
UNICODE non de 71 à 134 inclus 2
UNICODE non de 135 à 201 inclus 3
UNICODE non de 202 à 268 inclus 4
UNICODE non de 269 à 335 inclus 5
UNICODE non de 336 à 402 inclus 6
UNICODE non de 403 à 469 inclus 7
UNICODE non de 470 à 536 inclus 8
UNICODE non de 537 à 603 inclus 9
UNICODE non de 604 à 670 inclus 10
GSM oui de 1 à 145 inclus 1
GSM oui de 146 à 291 inclus 2
GSM oui de 292 à 444 inclus 3
GSM oui de 445 à 589 inclus 4
GSM oui de 590 à 734 inclus 5
GSM oui de 735 à 879 inclus 6
GSM oui de 880 à 1024 inclus 7
GSM oui de 1025 à 1169 inclus 8
GSM oui de 1170 à 1314 inclus 9
GSM oui de 1315 à 1459 inclus 10
UNICODE oui de 1 à 55 inclus 1
UNICODE oui de 56 à 119 inclus 2
UNICODE oui de 120 à 186 inclus 3
UNICODE oui de 187 à 241 inclus 4
UNICODE oui de 242 à 296 inclus 5
UNICODE oui de 297 à 351 inclus 6
UNICODE oui de 352 à 406 inclus 7
UNICODE oui de 407 à 461 inclus 8
UNICODE oui de 462 à 516 inclus 9
UNICODE oui de 517 à 572 inclus 10

Ces informations ne sont pas contractuelles.

Media

Les valeurs possibles sont : SMS, EMAIL.

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.

Dans la version actuelle de l'API, seules les opérations de lecture sur les groupes sont supportées.

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

GET /api/v1.1/groups

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.1/groups" \
    -H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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.1/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

GET /api/v1.1/groups/: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.1/groups/[id_group]" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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

2. 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
email String false L'adresse email du contact
createdAt Date true Date de création du contact
updatedAt Date true Date de dernière modification du contact

- Créer un contact

POST /api/v1.1/groups/: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.1/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.1/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.1");
var request = new RestRequest("/groups/[id_group]/contacts", Method.POST);
request.AddHeader("Authorization", "Bearer [Access-Token]");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n        \"name\":\"Julien\",\n        \"firstName\":\"Nicolas\",\n        \"landlineOne\":\"+33115610572\",\n        \"email\":\"consequaturlena.vincent@gmail.com\"\n    }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.1")
dim request as RestRequest = new RestRequest("/groups/[id_group]/contacts", Method.POST)
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddHeader("Content-Type", "application/json")
request.AddParameter("application/json", "{""name"":""Julien"",""firstName"":""Nicolas"",""landlineOne"":""+33115610572"",""email"":""consequaturlena.vincent@gmail.com""}", ParameterType.RequestBody)
dim response as IRestResponse = client.Execute(request)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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 technique (32 caractères alphanumériques) 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.1/groups/:id-group/contacts/:id-contact Emplacement du contact créé

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
400 BadRequest Msisdn Le format du numéro de téléphone fourni n'est pas correct
400 BadRequest Email 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

PUT /api/v1.1/groups/: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.1/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.1/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.1");
var request = 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", "{\n        \"name\":\"Julien\",\n        \"firstName\":\"Nicolas\",\n        \"landlineOne\":\"+33115610572\",\n        \"email\":\"consequaturlena.vincent@gmail.com\"\n    }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.1")
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", "{""name"":""Julien"",""firstName"":""Nicolas"",""landlineOne"":""+33115610572"",""email"":""consequaturlena.vincent@gmail.com""}", ParameterType.RequestBody)
dim response as IRestResponse = client.Execute(request)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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("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 technique (32 caractères alphanumériques) 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.1/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 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
400 BadRequest Msisdn Le format du numéro de téléphone fourni n'est pas correct
400 BadRequest Email 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

DELETE /api/v1.1/groups/: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.1/groups/[id_group]/contacts/[id_contact]" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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

GET /api/v1.1/groups/: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.1/groups/[id_group]/contacts/[id_contact]" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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",
    "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

GET /api/v1.1/groups/: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.1/groups/[id_group]/contacts" \
    -H "Authorization: Bearer [Access-Token]"
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
var request = new RestRequest("/groups/[id_group]/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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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

GET /api/v1.1/groups/: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.1/groups/[id_group]/contacts/[id_contact]/mailing-lists" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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é

3. 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

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

POST /api/v1.1/groups/:id-group/mailing-lists

Ce point d'accès permet de créer une liste de diffusion.

Format de requête

curl -X POST \
  "https://[SERVER_URL]/api/v1.1/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.1/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();
var client = new RestClient("https://[SERVER_URL]/api/v1.1");
var request = new RestRequest("/groups/[id_group]/mailing-lists", Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer [Access-Token]");
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.1")
dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists", Method.POST)
request.AddHeader("Content-Type", "application/json")
request.AddHeader("Authorization", "Bearer [Access-Token]")
request.AddParameter("application/json", "{""name"": ""Mes amis"",""description"": ""Contient tous mes amis.""}", ParameterType.RequestBody)
dim response as IRestResponse = client.Execute(request)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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))

}

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) 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

PUT /api/v1.1/groups/: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.1/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.1/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.1/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.1/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.1");
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");
request.AddParameter("application/json", "{\"name\": \"Mes nouveaux amis\",\"description\": \"Contient tous mes nouveaux amis.\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.1")
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")
request.AddParameter("application/json", "{""name"": ""Mes nouveaux amis"",""description"": ""Contient tous mes nouveaux amis.""}", ParameterType.RequestBody)
dim response as IRestResponse = client.Execute(request)

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) 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 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
400 BadRequest NameNotAvailable Le nom de la liste de diffusion n'est pas disponible

- Supprimer une liste de diffusion

DELETE /api/v1.1/groups/: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.1/groups/[id_group]/mailing-lists/[id_mailingList]" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]");
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.1");
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.1")
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)
<?php

$url = "https://[SERVER_URL]/api/v1/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.1/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))

}

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) 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

GET /api/v1.1/groups/:id-group/mailing-lists

Ce point d'accès permet de récupérer la liste paginée des listes de diffusions d'un groupe donné.

Format de requête

Format de requête

curl -X GET \
  "https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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();
var client = new RestClient("https://[SERVER_URL]/api/v1.1");
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.1")
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)
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://[SERVER_URL]/api/v1.1/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.1/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);

?>

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) 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
}

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

GET /api/v1.1/groups/: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.1/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.1/groups/[id_group]/mailing-lists/[id_mailingList]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
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.1");
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.1")
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.1/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.1/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 technique (32 caractères alphanumériques) 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"
}

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 un contact

PUT /api/v1.1/groups/:id-group/mailing-lists/:id-mailing-list/contacts/:id-contact

Ce point d'accès permet de rajouter un contact à une liste de diffusion.

Format de requête

Format de requête

curl -X PUT \
  "https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("PUT");
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.1");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]", 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.1")
dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]", Method.PUT)
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.1/groups/[id_group]/mailing-lists/[id_mailingList]/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]'
));    

$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.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]"

    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 technique (32 caractères alphanumériques) du groupe
id-mailing-list String L'identifiant unique de la liste de diffusion
id-contact String L'identifiant du contact à ajouter dans la liste

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 de diffusion ou 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 ConsistencyError Un des contacts que vous souhaitez ajouter ou supprimer à la liste n'existe pas, ou n'appartient pas au groupe

- Ajouter des contacts

PUT /api/v1.1/groups/: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.1/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.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts?ids=id-contact-1&ids=id-contact-2");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("PUT");
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, "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.1");
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.1")
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.1/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 technique (32 caractères alphanumériques) 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

GET /api/v1.1/groups/: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.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
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.1");
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.1")
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)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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))

}

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) 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
}

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 un contact

DELETE /api/v1.1/groups/:id-group/mailing-lists/:id-mailing-list/contacts/:id-contact

Ce point d'accès permet de retirer un contact d'une liste de diffusion.

Format de requête

Format de requête

curl -X DELETE \
  "https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id_group]/mailing-lists/[id_mailingList]/contacts/[id_contact]");
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.1");
var request = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/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.1")
dim request as RestRequest = new RestRequest("/groups/[id_group]/mailing-lists/[id_mailingList]/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.1/groups/[id_group]/mailing-lists/[id_mailingList]/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.1/groups/[id_group]/mailing-lists/[id_mailingList]/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 technique (32 caractères alphanumériques) du groupe.
id-mailing-list String L'identifiant unique de la liste de diffusion.
id-contact String L'identifiant du contact dans la liste de diffusion.

Format de réponse

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

- Détacher plusieurs contacts

DELETE /api/v1.1/groups/: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.1/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.1/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("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();
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1");
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.1")
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.1/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))
}

Format de réponse

- Status code : 200 OK

- Payload : N/A

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) du groupe
id-mailing-list String L'identifiant unique de la liste de diffusion
ids []String Les identifiants des contacts à retirer

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

4. Déclencher une diffusion

Une diffusion est un envoi d'un ou plusieurs messages déclenché immédiatement.

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 les médias SMS et/ou EMAIL.

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.

Les diffusions impliquant le média EMAIL peuvent optionnellement comporter jusqu'à 5 pièces jointes.

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

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
emails []String false La liste des adresses email
contacts []String false Les identifiants de contacts
mailingLists []String false Les identifiants de liste de diffusion
excludedContacts []String false Les identifiants des contacts exclus
mailingFields []String false La liste des champs de publipostage
mailingRecipients []Recipient false Les destinataires du publipostage
emailParam EmailParam false Le paramétrage de l'envoi email
smsParam SmsParam false Le paramétrage de l'envoi SMS
createdAt Date N/A (read only) Date de création
updatedAt Date N/A (read only) Date de dernière modification

Objet EmailParam

Champ Type Requis Description
senderName String false Le nom de l'émetteur
senderLocalPart String false La partie local de l'adresse email de l'émetteur, avant le @
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)

Objet 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)

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
email String false L'adresse email du destinataire
fields Objet JSON true Table de hachage contenant les variables

- Créer une diffusion SMS

POST /api/v1.1/groups/: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.1/groups/[id_group]/diffusion-requests" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]" \
    -d '
    {
           "name":"mon nom de diffusion",
           "contacts":["id_contact_1", "id_contact_2", ...],
           "mailingLists":["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.1/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\","+
    "\"contacts\":[\"id_contact_1\", \"id_contact_2\", ...],"+
    "\"mailingLists\":[\"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.1");
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"",
    ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
    ""mailingLists"":[""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.1")
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"",
    ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
    ""mailingLists"":[""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.1/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",
    "contacts":["id_contact_1", "id_contact_2", ...],
    "mailingLists":["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.1/groups/[id_group]/diffusion-requests"

    json := `{
            "name":"mon nom de diffusion",
            "contacts":["id_contact_1", "id_contact_2", ...],
            "mailingLists":["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("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 technique (32 caractères alphanumériques) du groupe.

Format de réponse

Format de réponse

{
    "id": "4a0c8b08-cc7e-4cee-a6a5-2407c9cba5d4",
    "name": "mon nom de diffusion",
    "msisdns": ["+33699832919"],
    "emails": [],
    "contacts": [],
    "mailingLists": ["81eb68cb-051b-4e9a-9ac2-aa774583f0f4"],
    "excludedContacts": [],
    "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 /api/v1.1/groups/:id-group/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'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 SenderLocalPartNotAllowed La valeur du champ local part n'est pas autorisée 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.

- Créer une diffusion e-mail

POST /api/v1.1/groups/: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.1/groups/[id_group]/diffusion-requests" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]" \
    -d '
    {
           "name":"mon nom de diffusion",
           "contacts":["id_contact_1", "id_contact_2", ...],
           "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
           "excludedContacts":[],
           "emails":["johndoe@domain.com"],
           "emailParam":{
              "senderLocalPart":"johnthesender",
              "senderName": "John the sender",
              "body": "mon contenu email HTML",
              "subject":"Mon objet de mail"
           }
        }
    '
URL url = new URL("https://[SERVER_URL]/api/v1.1/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\"," +
    "\"contacts\":[\"id_contact_1\", \"id_contact_2\", ...]," +
    "\"mailingLists\":[\"id_mailing_list_1\",\"id_mailing_list_2\", ...]," +
    "\"excludedContacts\":[]," +
    "\"emails\":[\"johndoe@domain.com\"]," +
    "\"emailParam\":{" +
      "\"senderLocalPart\":\"johnthesender\"," +
      "\"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.1");
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"",
   ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
   ""mailingLists"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
   ""excludedContacts"":[],
   ""emails"":[""johndoe@domain.com""],
   ""emailParam"":{
      ""senderLocalPart"":""johnthesender"",
      ""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.1")
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"",
   ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
   ""mailingLists"":[""id_mailing_list_1"",""id_mailing_list_2"", ...],
   ""excludedContacts"":[],
   ""emails"":[""johndoe@domain.com""],
   ""emailParam"":{
      ""senderLocalPart"":""johnthesender"",
      ""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
<?php

$url = "https://[SERVER_URL]/api/v1.1/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",
    "contacts":["id_contact_1", "id_contact_2", ...],
    "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
    "excludedContacts":[],
    "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.1/groups/[id_group]/diffusion-requests"

    json := `{
            "name":"mon nom de diffusion",
            "contacts":["id_contact_1", "id_contact_2", ...],
            "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
            "excludedContacts":[],
            "emails":"johndoe@domain.com",
            "emailParam":{
                "senderLocalPart":"johnthesender",
                "senderName": "John the sender",
                "subject": "Mon objet de mail",
                "body": "mon contenu SMS"
            }
    }`

    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 technique (32 caractères alphanumériques) du groupe.

Format de réponse

Format de réponse

{
    "id": "b7d167ba-24f3-4838-aaca-7e8b3c4b161f",
    "name": "mon nom de diffusion",
    "msisdns": [],
    "emails": ["johndoe@domain.com"],
    "contacts": [],
    "mailingLists": [],
    "excludedContacts": [],
    "emailParam": {
        "senderName": "John the sender",
        "senderLocalPart": "adam.royer",
        "subject": "Mon objet de mail",
        "body": "mon contenu email HTML"
    },
    "createdAt": "2018-05-22T17:05:39.512+02:00",
    "updatedAt": "2018-05-22T17:05:39.512+02:00"
}

- Status code : 201 Created

- Headers Response :

Header Value Description
Content-Type application/json Content-type utilisé.
Location /api/v1.1/groups/:id-group/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'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 SenderLocalPartNotAllowed La valeur du champ local part n'est pas autorisée 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 :

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.

- Créer une diffusion multimédia

POST /api/v1.1/groups/: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.1/groups/[id_group]/diffusion-requests" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer [Access-Token]" \
    -d '
    {
       "name":"mon nom de diffusion",
       "contacts":["id_contact_1", "id_contact_2", ...],
       "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
       "excludedContacts":[],
       "msisdns":["0600000000"],
       "emails":["johndoe@domain.com"],
       "smsParam":{
          "encoding":"GSM7",
          "senderName":"OpenBar",
          "body":"mon contenu SMS"
       },
       "emailParam":{
          "senderLocalPart":"johnthesender",
          "senderName": "John the sender",
          "body": "mon contenu email HTML",
          "subject":"Mon objet de mail"
       }
    }

    '
URL url = new URL("https://[SERVER_URL]/api/v1.1/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\"," +
    "\"contacts\":[\"id_contact_1\", \"id_contact_2\", ...]," +
    "\"mailingLists\":[\"id_mailing_list_1\",\"id_mailing_list_2\", ...]," +
    "\"excludedContacts\":[]," +
    "\"msisdns\":[\"0600000000\"]," +
    "\"emails\":[\"johndoe@domain.com\"]," +
    "\"smsParam\":{" +
      "\"encoding\":\"GSM7\"," +
      "\"senderName\":\"OpenBar\"," +
      "\"body\":\"mon contenu SMS\"" +
    "}," +
    "\"emailParam\":{" +
      "\"senderLocalPart\":\"johnthesender\"," +
      "\"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.1");
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"",
       ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
       ""mailingLists"":[""id_mailing_list_1"", ""id_mailing_list_2"", ...],
       ""excludedContacts"":[],
       ""msisdns"":[""0600000000""],
       ""emails"":[""johndoe@domain.com""],
       ""smsParam"":{
          ""encoding"":""GSM7"",
          ""senderName"":""OpenBar"",
          ""body"":""mon contenu SMS""
       },
       ""emailParam"":{
          ""senderLocalPart"":""johnthesender"",
          ""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.1")
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"",
       ""contacts"":[""id_contact_1"", ""id_contact_2"", ...],
       ""mailingLists"":[""id_mailing_list_1"", ""id_mailing_list_2"", ...],
       ""excludedContacts"":[],
       ""msisdns"":[""0600000000""],
       ""emails"":[""johndoe@domain.com""],
       ""smsParam"":{
          ""encoding"":""GSM7"",
          ""senderName"":""OpenBar"",
          ""body"":""mon contenu SMS""
       },
       ""emailParam"":{
          ""senderLocalPart"":""johnthesender"",
          ""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.1/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",
    "contacts":["id_contact_1", "id_contact_2", ...],
    "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
    "excludedContacts":[],
    "msisdns":["0600000000"],
    "emails":["johndoe@domain.com"],
    "smsParam":{
        "encoding":"GSM7",
        "senderName":"OpenBar",
        "body":"mon contenu SMS"
        },
    "emailParam":{
              "senderLocalPart":"johnthesender",
              "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.1/groups/[id_group]/diffusion-requests"

    json := `{
             "name":"mon nom de diffusion",
             "contacts":["id_contact_1", "id_contact_2", ...],
             "mailingLists":["id_mailing_list_1","id_mailing_list_2", ...],
             "excludedContacts":[],
             "emails":["johndoe@domain.com"],
             "emailParam":{
                 "senderLocalPart":"johnthesender",
                 "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"}
     }`

    req, _ := http.NewRequest("POST", url, json)

    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 technique (32 caractères alphanumériques) du groupe.

Format de réponse

Format de réponse

{
    "id": "dd75b75c-9a3a-43ea-b8bc-33ca5ca31341",
    "name": "mon nom de diffusion",
    "msisdns": ["+33678581724"],
    "emails": ["johndoe@domain.com"],
    "contacts": [],
    "mailingLists": [],
    "excludedContacts": [],
    "emailParam": {
        "senderName": "John the sender",
        "senderLocalPart": "adam.royer",
        "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:12:54.933+02:00",
    "updatedAt": "2018-05-22T17:12:54.933+02:00"
}

- Status code : 201 Created

- Headers Response :

Header Value Description
Content-Type application/json Content-type utilisé
Location /api/v1.1/groups/:id-group/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'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 SenderLocalPartNotAllowed La valeur du champ local part n'est pas autorisée 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.

- 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

Les champs de publipostage ne peuvent ni commencer par $ ni contenir ..

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.

Format de requête

Format de requête

curl -X POST \
  "https://[SERVER_URL]/api/v1.1/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":{
              "senderLocalPart": "john",
              "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"
                    }
                }
            ]
     }'

URL url = new URL("https://[SERVER_URL]/api/v1.1/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\": \"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\":{" +
      "\"senderLocalPart\": \"john\"," +
      "\"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.1");
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#, Mon body SMS.""
    },
    ""emailParam"":{
         ""senderLocalPart"": ""john"",
         ""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 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""
            }
        }
   ]
}";
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
dim client as RestClient = new RestClient("https://[SERVER_URL]/api/v1.1")
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#, Mon body SMS.""
    },
    ""emailParam"":{
         ""senderLocalPart"": ""john"",
         ""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 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""
            }
        }
   ]
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php
$url = "https://[SERVER_URL]/api/v1.1/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":{
          "senderLocalPart": "john",
          "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 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.1/groups/[id_group]/diffusion-requests"

    json := `{
         "name": "Campagne avec publipostage"
         "smsParam":{
            "encoding":"GSM7",
            "body":"Bonjour #prenom# #nom#, Mon body de SMS."
         },
         "emailParam":{
            "senderLocalPart": "john",
            "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"
                 }
             }      
         ]
    }`

    req, _ := http.NewRequest("POST", url, json)

    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))

}

Format de réponse

Format de réponse

{
    "id": "cfd296b7-a2a1-4114-aeae-f15b4aaac0e5",
    "name": "Campagne avec publipostage",
    "msisdns": [],
    "emails": [],
    "contacts": [],
    "mailingLists": [],
    "excludedContacts": [],
    "emailParam": {
        "senderName": "John the sender",
        "senderLocalPart": "adam.royer",
        "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:26:37.998+02:00",
    "updatedAt": "2018-05-22T17:26:37.998+02:00"
}

- Status code : 201 Created

- Headers Response :

Header Value Description
Content-Type application/json Content-type utilisé.
Location /api/v1.1/groups/:id-group/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'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 SenderLocalPartNotAllowed La valeur du champ local part n'est pas autorisée 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.

- Créer une diffusion avec pièces jointes

POST /api/v1.1/groups/:id-group/diffusion-requests

Cette route permet de créer une diffusion incluant des pièces jointes. Une diffusion peut comporter jusqu'à 5 pièces jointes pour un poids total maximum de 5Mo.

La diffusion doit au moins concerner le média EMAIL.

Format de requête

Format de requête


1° solution:

curl -X POST "https://[SERVER_URL]/api/v1.1/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":{ 
        "senderLocalPart":"johnthesender",
        "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.1/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":{ 
                            "senderLocalPart":"johnthesender",
                            "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.1")
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"":{
        "senderLocalPart":"johnthesender",
        ""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.1")
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"":{
        "senderLocalPart":"johnthesender",
        ""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.1/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.setRequestProperty("Cache-Control", "no-cache");
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\":{ " +
        "        \"senderLocalPart\":\"johnthesender\", " +
        "        \"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":{
            "senderLocalPart":"johnthesender",
            "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.1/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.1/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\":{ 
        \"senderLocalPart\":\"johnthesender\", 
        \"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 :

- Query Parameters

Parameter Type Description
id-group String L'identifiant unique du groupe.

Format de réponse

Format de réponse

{
    "id": "8f3cfcc2-1be0-4e71-9d22-b4203ce32b79",
    "name": "Message interne - 07/03/2017",
    "msisdns": [],
    "emails": ["johndoe@domain.com", "lisa.money@domain.com", "jason.moriz@domain.com"],
    "contacts": [],
    "mailingLists": [],
    "excludedContacts": [],
    "emailParam": {
        "senderName": "Patrick",
        "senderLocalPart": "adam.royer",
        "subject": "Réunion de cet après-midi annulée",
        "body": "Hello world"
    },
    "createdAt": "2018-05-22T17:41:22.312+02:00",
    "updatedAt": "2018-05-22T17:41:22.312+02:00"
}

- Status code : 201 Created

- Headers Response :

Header Value Description
Content-Type application/json Content-type utilisé.
Location /api/v1.1/groups/:id-group/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'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 SenderLocalPartNotAllowed La valeur du champ local part n'est pas autorisée 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.

5. 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

EmissionChannel

valeurs possibles : WEB, EMAIL, API_LIGHT, API.

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
email 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 destinataire 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

GET /api/v1.1/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.1/diffusions" \
    -H "Authorization: Bearer [Access-Token]" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/diffusions");
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.1");
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.1")
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)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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))

}

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"
        },
        "strategy": {
            "name": "stratégie à la volée",
            "lifetime": 0,
            "sequences": []
        },
        "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,
            "metrics": {
                "recipients": {
                    "status": {
                        "SUCCESS": 4
                    },
                    "media": {
                        "SMS": {
                            "SUCCESS": 2
                        },
                        "EMAIL": {
                            "SUCCESS": 2
                        }
                    }
                },
                "communications": {
                    "SMS": {
                        "SUCCESS": 2
                    },
                    "EMAIL": {
                        "SUCCESS": 2
                    }
                },
                "openings": {
                    "SMS": {
                        "DELIVERED": 2,
                        "SENT": 2
                    },
                    "EMAIL": {
                        "DELIVERED": 2,
                        "SENT": 1,
                        "ACK": 1
                    }
                }
            }
        },
        "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"
        },
        "strategy": {
            "name": "stratégie à la volée",
            "lifetime": 0,
            "sequences": []
        },
        "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,
            "metrics": {
                "recipients": {
                    "status": {
                        "SUCCESS": 1
                    },
                    "media": {
                        "SMS": {
                            "SUCCESS": 1
                        }
                    }
                },
                "communications": {
                    "SMS": {
                        "SUCCESS": 1
                    }
                },
                "openings": {
                    "SMS": {
                        "DELIVERED": 1,
                        "SENT": 1
                    }
                }
            }
        },
        "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
media 'EMAIL' ou 'SMS' Le type de média utilisé dans la diffusion
recipientFullName String Le nom d'un contact destinataire
recipientEmail email L'adresse email d'un destinataire
recipientPhoneNumber msisdn Le numéro de téléphone d'un destinataire

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.1/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

GET /api/v1.1/diffusions/:id-diffusion

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.1/diffusions/[id_diffusion]" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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.1");
var request = new RestRequest("/diffusions/[id_diffusion]", 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.1")
dim request as RestRequest = new RestRequest("/diffusions/[id_diffusion]", 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.1/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.1/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.

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

6. 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

- 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

Lister les messages remis

GET /api/v1.1/diffusions/:id-diffusion/recipients

Ce point d'accès permet de récupérer les destinataires pour une diffusion.

Format de requête

Format de requête

curl -X GET "https://[SERVER_URL]/api/v1.1/diffusions/[id_diffusion]/recipients" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/diffusions/[id_diffusion]/recipients");
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
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();
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/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.1");
var request = new RestRequest("/diffusions/[id_diffusion]/recipients", 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.1")
dim request as RestRequest = new RestRequest("/diffusions/[id_diffusion]/recipients", 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-diffusion String L'identifiant unique de la diffusion.

Format de réponse

Format de réponse

{
    "content": [{
        "id": "5b04062b9256c90fb3377a74",
        "status": "SUCCESS",
        "label": "+33678541224"
    }, {
        "id": "5b04062b9256c90fb3377a73",
        "status": "SUCCESS",
        "label": "+33678581724"
    }],
    "totalElements": 2,
    "last": true,
    "totalPages": 1,
    "numberOfElements": 2,
    "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 'EMAIL' ou 'SMS' Le type de média sur lequel le destinataire a été joint
label String Le nom ou le prénom de contact
address email ou msisdn L'adresse email ou le msisdn d'un 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.1/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é

7. 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.
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).

Récupérer les réponses

GET /api/v1.1/groups/: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.1/groups/[id_group]/replies" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/groups/[id_group]/replies");
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.1");
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.1")
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)
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://[SERVER_URL]/api/v1.1/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.1/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);

?>

- Query Parameters

Parameter Type Description
id-group String L'identifiant technique (32 caractères alphanumériques) du groupe

Format de réponse

Format de réponse

{
    "content": [{
        "id": "5b0407ea9256c90fb3377a77",
        "timestamp": "2018-05-22T14:07:06.000+02:00",
        "address": "+33678581726",
        "body": "this is reply ",
        "author": {
            "id": "2b153b01-c082-413a-a37d-7fdb93f9709d",
            "email": "democeov5.Agathe@gmail.com",
            "name": "Blues",
            "firstName": "Agathe"
        },
        "country": "FRA"
    }],
    "totalElements": 1,
    "last": true,
    "totalPages": 1,
    "numberOfElements": 1,
    "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
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

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.1/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é

8. 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
smsPlusSubKeyword SmsPlusSubKeyword true Le Numéro/Mot-clef/Sous-mot-clef associé à un 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

SmsPlusSubKeyword :

Ceci représente la règle de routage associée au SMS entrant, configurable dans l'application.

Champ Type Read-Only Description
number String true Le numéro cible de la règle de routage
keyword String true Le mot-clef de la règle de routage (optionnel)
subkeyword String true Le sous-mot-clef de la règle de routage (optionnel)

- Récupérer les SMS entrants

GET /api/v1.1/smsplus

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.1/smsplus" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.1/smsplus");
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.1");
var request = new RestRequest("/smsplus", 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.1")
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)
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://[SERVER_URL]/api/v1.1/smsplus"

    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.1/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);

?>

- 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
        }
    ],
    "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.1/smsplus?body=soldes&dateMax=2017-04-26T23:59:59.999Z&dateMin=2017-04-18T22:00:00.000Z

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

POST /api/v1.1/smsplus/conversations/:id-conversation/replies

Format de requête

Format de requête

curl -X POST \
  "https://[SERVER_URL]/api/v1.1/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.1/smsplus/conversations/[id_conversation]/replies");
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 = "{\"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.1");
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"":""Mon body"",
    ""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.1")
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"":""Mon body"",
    ""encoding"":""GSM7""
}"
request.AddParameter("application/json", json, ParameterType.RequestBody)
Dim response as IRestResponse = client.Execute(request)
<?php

$url = "https://[SERVER_URL]/api/v1.1/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.1/smsplus/conversations/[id_conversation]/replies"

    payload := strings.NewReader("/* OBJET 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+

GET /api/v1.1/smsplus/conversations/:id-conversation

Format de requête

Format de requête

curl -X GET \
  "https://[SERVER_URL]/api/v1.1/smsplus/conversations/[id_conversation]" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json" \
URL url = new URL("https://[SERVER_URL]/api/v1.1/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();
var client = new RestClient("https://[SERVER_URL]/api/v1.1");
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.1")
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)
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://[SERVER_URL]/api/v1.1/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.1/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);

?>

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"
    },
    "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"
    },
    "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+

GET /api/v1.1/smsplus/[groupId]/campaigns

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.1/smsplus/[groupId]/campaigns" \
    -H "Authorization: Bearer [Access-Token]" \
    -H "Content-Type: application/json"
URL url = new URL("https://[SERVER_URL]/api/v1.1/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();
var client = new RestClient("https://[SERVER_URL]/api/v1.1");
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.1")
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)
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://[SERVER_URL]/api/v1.1/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.1/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);

?>

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é