A nova versão da API de integração da Tracksale foi criada com o objetivo de que as informações
pudessem ter uma autenticação para serem acessadas. Dentre as diferenças entre a versão 1.0 e a 2.0,
temos:
- Agora um TOKEN é gerado através da nossa plataforma, ou de uma requisição. Desta forma,
automatizamos todo o processo e também homologamos o acesso a informações.
- A API 2.0 integra as funções da versão 1.0 da API live e API RESTful em uma só API com métodos
diversos.
- A nova API trabalha com modelo RESTful com JSON.
Nessa documentaçao você encontrará também exemplos de códigos nas linguagem a sua escolha, que podem ser alterados a qualquer momento no botão a direita.
Essa API usa o protocolo HTTPS. Portanto todas as chamadas deverão começar com https://
.
A utilização da API demanda o uso de uma chave que chamamos de TOKEN, o mesmo será responsável por
autenticar o acesso ao sistema.
-
Para isso faça o login na
Tracksale com uma conta de administrador.
-
Acesse o menu Apps no canto
superior direito junto ao nome do usuário.
-
Clique em instalar no
app
"API V2".
-
Clicando em NOVO TOKEN.
-
Um novo token será gerado.
-
Um novo TOKEN será gerado e adicionado a lista, novas adições não inutilizam os
anteriores.
Toda a comunicação da API é feita a partir da URL base https://api.tracksale.co/v2
.
Usaremos o TOKEN que adquirimos no header (sem a necessidade de conversão para base64), para
autenticarmos o acesso. Da seguinte forma:
-
Key
Authorization
-
Value
bearer TOKEN
Onde:
- Authorization é a palavra Authorization
- bearer é a palavra bearer e TOKEN é o TOKEN
adquirido aqui
Listar Campanhas
Para listar as campanhas utilizaremos a seguinte configuração
-
O método usado será :
GET
-
A URL usada será :
https://api.tracksale.co/v2/campaign
Esse método é responsável por listar todas as campanhas, seus códigos e
alguns detalhes, como por exemplo as perguntas usadas.
É possível que se retorne apenas uma campanha específica, isso é possivel usando
Onde Campaign_code é o código da campanha que você deseja obter
informações.
Para pegar o código de uma campanha específica, deve-se primeiro listar
todas as campanhas e pegar o atributo "code" do retorno.
Certifique-se de usar os parâmetros start
e end
no formato AAAA-MM-DD para receber dados de resposta como número de neutros, promotores, detratores e assim por diante.
Exemplo de retorno:
{
"name":"Customers_name",
"code" : Campaign_code,
"description" : Campaign_description,
"detractors" : Detractors_name,
"passives" : Neutrals_name,
"promoters" : Promoters_name,
"dispatches" : Dispatches_number,
"comments" : Comments,
"answers" : Answers,
"main_channel" : "Main_channel",
"create_time" : "Time_of_creation",
"questions" : [
{
"type" : "Question_type",
"title" : "Question_title",
"question" : "Question",
"secondary" : "Secondary_question"
}
]
}
Também é possível complementar o resultado da consulta com as informações de limitação de disparos. Para isso, utilize o parâmetro de query dispatch_limits
com valor 1
.
Se a campanha não utiliza esse recurso, os valores retornados serão null
.
Exemplo de retorno:
{
"name":"Customers_name",
"code" : Campaign_code,
"description" : Campaign_description,
"detractors" : Detractors_name,
"passives" : Neutrals_name,
"promoters" : Promoters_name,
"dispatches" : Dispatches_number,
"comments" : Comments,
"answers" : Answers,
"main_channel" : "Main_channel",
"create_time" : "Time_of_creation",
"questions" : [
{
"type" : "Question_type",
"title" : "Question_title",
"question" : "Question",
"secondary" : "Secondary_question"
}
],
"dispatch_limits": {
"daily": {
"limit": null,
"remaining": null
},
"weekly": {
"limit": null,
"remaining": null
},
"monthly": {
"limit": null,
"remaining": null
}
}
}
Exemplos de código : Listar campanhas
Tipo Http
GET /v2/campaign HTTP/1.1
Host: api.tracksale.co
Authorization: bearer TOKEN
Cache-Control: no-cache
Tipo C(libCurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.tracksale.co/v2/campaign");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "cache-control: no-cache");
headers = curl_slist_append(headers, "authorization: bearer TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
Tipo cURL
curl -X GET \
https://api.tracksale.co/v2/campaign \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache'
Tipo C#
var client = new RestClient("https://api.tracksale.co/v2/campaign");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "bearer TOKEN");
IRestResponse response = client.Execute(request);
Tipo Go
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tracksale.co/v2/campaign"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "bearer TOKEN")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Tipo Java (OK HTTP)
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.tracksale.co/v2/campaign")
.get()
.addHeader("authorization", "bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
Tipo Java Unirest
HttpResponse<String> response = Unirest.get("https://api.tracksale.co/v2/campaign")
.header("authorization", "bearer TOKEN")
.header("cache-control", "no-cache")
.asString();
Tipo JavaScript Jquery AJAX
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.tracksale.co/v2/campaign",
"method": "GET",
"headers": {
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Tipo JavaScript XHR
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://api.tracksale.co/v2/campaign");
xhr.setRequestHeader("authorization", "bearer TOKEN");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
Tipo NodeJS Native
var http = require("https");
var options = {
"method": "GET",
"hostname": "api.tracksale.co",
"port": null,
"path": "/v2/campaign",
"headers": {
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
Tipo NodeJS Request
var request = require("request");
var options = { method: 'GET',
url: 'https://api.tracksale.co/v2/campaign',
headers:
{ 'cache-control': 'no-cache',
'authorization': 'bearer TOKEN' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
console.log(body);
});
Tipo NodeJS NodeJS Unirest
var unirest = require("unirest");
var req = unirest("GET", "https://api.tracksale.co/v2/campaign");
req.headers({
"cache-control": "no-cache",
"authorization": "bearer TOKEN"
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Tipo Objective-C (NSURL)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"bearer TOKEN",
@"cache-control": @"no-cache" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.tracksale.co/v2/campaign"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Tipo OCaml(coHttp)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://api.tracksale.co/v2/campaign" in
let headers = Header.init ()
|> fun h -> Header.add h "authorization" "bearer TOKEN"
|> fun h -> Header.add h "cache-control" "no-cache"
in
Client.call ~headers `GET uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
Tipo PHP HttpRequest
<?php
$request = new HttpRequest();
$request->setUrl('https://api.tracksale.co/v2/campaign');
$request->setMethod(HTTP_METH_GET);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Tipo PHP pecl_http
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api.tracksale.co/v2/campaign');
$request->setRequestMethod('GET');
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Tipo PHP cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.tracksale.co/v2/campaign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: bearer TOKEN",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Tipo Python http.client(Python 3)
import http.client
conn = http.client.HTTPSConnection("api.tracksale.co")
headers = {
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
conn.request("GET", "/v2/campaign", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tipo Python requests
import requests
url = "https://api.tracksale.co/v2/campaign"
headers = {
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers)
print(response.text)
Tipo Ruby (NET::Http)
require 'uri'
require 'net/http'
url = URI("https://api.tracksale.co/v2/campaign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'bearer TOKEN'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
Tipo Shell wget
wget --quiet \
--method GET \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--output-document \
- https://api.tracksale.co/v2/campaign
Tipo Shell Httpie
http GET https://api.tracksale.co/v2/campaign \
authorization:'bearer TOKEN' \
cache-control:no-cache
Tipo Shell cURL
curl --request GET \
--url https://api.tracksale.co/v2/campaign \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache'
Tipo Swift (NSURL)
import Foundation
let headers = [
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://api.tracksale.co/v2/campaign")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
É possível buscar informações de um Widget criado como a quantidade de vezes que foi aberto, limites de abertura, seu identificador e nome.
-
O método usado será :
GET
-
A URL usada será :
https://api.tracksale.co/v2/widget/{key}
Onde {key} é o atributo chave que pode ser encotrado na personalização de um Widget.
Exemplo de retorno:
{
"id": 1,
"name": "Widget",
"views": {
"daily": 2,
"weekly": 0,
"monthly": 0,
},
"limits": {
"daily": 2,
"weekly": 0,
"monthly": 0,
"has_limit": false,
"limit_reached": "daily"
}
}
Checar Noventena
É possível checar se um cliente está sendo impactado pelas regras de noventena.
-
O método usado será :
POST
-
A URL usada será :
https://api.tracksale.co/v2/campaign/Campaign_code/can-impact
-
O JSON poderá usar um e-mail, número de telefone ou um identificador único da sua empresa para o cliente:
{
"email": "Customer Email",
// or
"phone": "Customer Phone",
// or
"identification": "Customer Identification"
}
Onde Campaign_code é o código da campanha que você deseja checar as informações.
Para pegar o código de uma campanha específica, deve-se primeiro listar
todas as campanhas e pegar o atributo "code" do retorno.
Exemplo de retorno:
{
"can_impact": true
}
Link de Pesquisa
É possível criar links de pesquisa diretamente pela API respeitando a limitação de 500 clientes por requisição.
-
O método usado será :
POST
-
A URL usada será :
https://api.tracksale.co/v2/campaign/Campaign_code/survey-links
-
O JSON será um array de clientes como no exemplo abaixo:
{
"customers": [
{
"name": "Customer Name",
"email": "Customer Email",
"phone": "Customer Phone",
"tags": [
{
"name": "Tag name",
"value": "Tag value"
},
{
"name": "Tag name",
"value": "Tag value"
}
]
}
]
}
Onde Campaign_code é o código da campanha que você deseja checar as informações.
Para pegar o código de uma campanha específica, deve-se primeiro listar
todas as campanhas e pegar o atributo "code" do retorno.
Exemplo de retorno:
{
"customers": [
{
"name": "Customer Name",
"email": "Customer Email",
"phone": "Customer Phone",
"tags": [
{
"name": "Tag name",
"value": "Tag value"
},
{
"name": "Tag name",
"value": "Tag value"
}
],
"survey_link": "https://tracksale.co/s/Survey_hash"
}
]
}
Onde Survey_hash é o identificador alfanumérico desse link.
Disparos
Os disparos podem ser realizados de duas formas diferentes
Disparo agendado:
A existência da variável schedule_time é opcional.
Assim, temos duas opções
-
Inserir a variável "schedule_time":
Dessa forma você você pode usar "schedule_time" para definir o momento onde o disparo deve ser efetuado,
determinado no formato "Unix Timestamp" em segundos .
O body ficará da seguinte forma
O Exemplo a seguir mostra a inserção com todas as variáveis, mas existe casos em que as variáveis indentification, phone e email podem ser omitidas.
Ex: Caso a campanha seja via SMS, não é necessário eviar o email, mas ele ainda pode ser enviado. Nas campanhas via email a variável phone não precisa ser enviada, mas caso seja necessário, existe a possibilidade de enviá-la.
O envio de ambas variáveis é indicado caso use fluxo de campanhas.
O envio de identification
é opcional, porém, recomendado caso deseje identificar o cliente pelo mesmo parâmetro da sua empresa. O identification
precisa ser um valor único para cada cliente. Se trata de um valor alfanumérico, passado entre aspas. Caso não seja utilizado, deve ser enviado null
, sem aspas.
Limite máximo de 500 clientes por requisição.
{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"identification": null,
"phone": "Customers_phone",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_seconds
}
Do tipo application/json
Não inserir a variável "schedule_time" :
Essa maneira deve ser usada caso sua intenção seja reunir vários disparos a uma
campanha, para efetuá-los de uma só vez posteriormente.
Dessa forma, será retornado um código do lote disparos, esse código deve ser usado no Disparo de lotes.
{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
}
Do tipo application/json
Todos os disparos subsequentes a mesma campanha retornarão o mesmo lote de disparos
até que você realize o disparo deste lote.
Parâmetros
Atributos |
Tipos |
Obrigatório |
Descrição |
name |
String |
Não |
Nome do cliente |
email |
String |
Sim (para disparos via email) |
Email do cliente |
phone |
String |
Sim (para disparos via SMS) |
Telefone do cliente |
tags |
Array |
Não |
Nome da tag |
finish_time |
Integer |
Não |
Data de expiração da pesquisa, em segundos, no formato timestamp |
tags |
Tipo |
Obrigatório |
Descrição |
name |
String |
Sim |
Nome da tag |
value |
String |
Sim |
Valor da Tag |
Exemplo de retorno:
Sem schedule_time
{
"msg":"Customers have been successfully added!",
"dispatch_code":"Dispatch_code",
"status": {
"duplicated":Number_of_duplications,
"invalid":Number_of_invalids,
"inserted":Number_of_insertions
},
"campaign": {
"name":Campaign_name,
"cod":Campaign_code
}
}
Com schedule_time
{
"msg":"Dispatch executed!",
"dispatch_code":"Dispatch_code",
"status": {
"duplicated":Number_of_duplications,
"invalid":Number_of_invalids,
"inserted":Number_of_insertions
},
"campaign": {
"name":Campaign_name,
"cod":Campaign_code
}
}
É possível também retornar um array com os customers que não foram inseridos, seja por que eram duplicados ou por que se encontravam inválidos.
Para isso, deve-se passar o parâmetro getNotInserted com o valor 1. Assim retornaremos da seguinte forma.
{
"msg":"Dispatch executed!",
"dispatch_code":"Dispatch_code",
"status": {
"duplicated":Number_of_duplications,
"invalid":Number_of_invalids,
"inserted":Number_of_insertions
},
"campaign": {
"name":Campaign_name,
"cod":Campaign_code
}
"duplicated_customers": [
{
"name":"customer name",
"email":"email@email.com"
}
],
"invalid_customers": [
{
"name":"customer name",
"reason":"Invalid or empty main channel"
}
],
}
Tipo Http
POST /v2/campaign/campaign_code/dispatch HTTP/1.1
Host: api.tracksale
Content-Type: application/json
Authorization: bearer TOKEN
Cache-Control: no-cache
{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}
Tipo C(libCurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.tracksale.co/v2/campaign/campaign_code/dispatch");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "cache-control: no-cache");
headers = curl_slist_append(headers, "authorization: bearer TOKEN");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}");
CURLcode ret = curl_easy_perform(hnd);
Tipo cURL
curl -X POST \
https://api.tracksale.co/v2/campaign/campaign_code/dispatch \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}'
Tipo C#
var client = new RestClient("https://api.tracksale.co/v2/campaign/campaign_code/dispatch");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "bearer TOKEN");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Tipo Go
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tracksale.co/v2/campaign/campaign_code/dispatch"
payload := strings.NewReader("{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "bearer TOKEN")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Tipo Java (OK HTTP)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}");
Request request = new Request.Builder()
.url("https://api.tracksale.co/v2/campaign/campaign_code/dispatch")
.post(body)
.addHeader("content-type", "application/json")
.addHeader("authorization", "bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
Tipo Java Unirest
HttpResponse<Foundag> response = Unirest.get("https://api.tracksale.co/v2/campaign")
.header("authorization", "bearer TOKEN")
.header("cache-control", "no-cache")
.asString();
Tipo JavaScript Jquery AJAX
HttpResponse<String> response = Unirest.post("https://api.tracksale.co/v2/campaign/campaign_code/dispatch")
.header("content-type", "application/json")
.header("authorization", "bearer TOKEN")
.header("cache-control", "no-cache")
.body("{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}")
.asString();
Tipo JavaScript XHR
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.tracksale.co/v2/campaign/campaign_code/dispatch",
"method": "POST",
"headers": {
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
},
"data": "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Tipo NodeJS Native
var http = require("https");
var options = {
"method": "POST",
"hostname": "api.tracksale.co",
"port": null,
"path": "/v2/campaign/campaign_code/dispatch",
"headers": {
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}");
req.end();
Tipo NodeJS Request
var request = require("request");
var options = { method: 'POST',
url: 'https://api.tracksale.co/v2/campaign/campaign_code/dispatch',
headers:
{ 'cache-control': 'no-cache',
'authorization': 'bearer TOKEN',
'content-type': 'application/json' },
body: '{\n "customers": [\n {\n "name":"Customers_name",\n "email":"Customers_email",\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n },\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ],\n "schedule_time": Timestamp_in_Seconds\n}' };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Tipo NodeJS NodeJS Unirest
var unirest = require("unirest");
var req = unirest("POST", "https://api.tracksale.co/v2/campaign/campaign_code/dispatch");
req.headers({
"cache-control": "no-cache",
"authorization": "bearer TOKEN",
"content-type": "application/json"
});
req.send("{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}");
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Tipo Objective-C (NSURL)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"content-type": @"application/json",
@"authorization": @"bearer TOKEN",
@"cache-control": @"no-cache" };
NSData *postData = [[NSData alloc] initWithData:[@"{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}" dataUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.tracksale.co/v2/campaign/campaign_code/dispatch"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Tipo OCaml(coHttp)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://api.tracksale.co/v2/campaign/campaign_code/dispatch" in
let headers = Header.init ()
|> fun h -> Header.add h "content-type" "application/json"
|> fun h -> Header.add h "authorization" "bearer TOKEN"
|> fun h -> Header.add h "cache-control" "no-cache"
in
let body = Cohttp_lwt_body.of_string "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
Tipo PHP HttpRequest
<?php
$request = new HttpRequest();
$request->setUrl('https://api.tracksale.co/v2/campaign/campaign_code/dispatch');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN',
'content-type' => 'application/json'
));
$request->setBody('{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Tipo PHP pecl_http
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append('{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}');
$request->setRequestUrl('https://api.tracksale.co/v2/campaign/campaign_code/dispatch');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN',
'content-type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Tipo PHP cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.tracksale.co/v2/campaign/campaign_code/dispatch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}",
CURLOPT_HTTPHEADER => array(
"authorization: bearer TOKEN",
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Tipo Python http.client(Python 3)
import http.client
conn = http.client.HTTPSConnection("api.tracksale.co")
payload = "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}"
headers = {
'content-type': "application/json",
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
conn.request("POST", "/v2/campaign/campaign_code/dispatch", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tipo Python requests
import requests
url = "https://api.tracksale.co/v2/campaign/campaign_code/dispatch"
payload = "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}"
headers = {
'content-type': "application/json",
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Tipo Ruby (NET::Http)
require 'uri'
require 'net/http'
url = URI("https://api.tracksale.co/v2/campaign/campaign_code/dispatch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'bearer TOKEN'
request["cache-control"] = 'no-cache'
request.body = "{\n \"customers\": [\n {\n \"name\":\"Customers_name\",\n \"email\":\"Customers_email\",\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n },\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ],\n \"schedule_time\": Timestamp_in_Seconds\n}"
response = http.request(request)
puts response.read_body
Tipo Shell wget
wget --quiet \
--method POST \
--header 'content-type: application/json' \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--body-data '{\n "customers": [\n {\n "name":"Customers_name",\n "email":"Customers_email",\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n },\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ],\n "schedule_time": Timestamp_in_Seconds\n}' \
--output-document \
- https://api.tracksale.co/v2/campaign/campaign_code/dispatch
Tipo Shell Httpie
echo '{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}' | \
http POST https://api.tracksale.co/v2/campaign/campaign_code/dispatch \
authorization:'bearer TOKEN' \
cache-control:no-cache \
content-type:application/json
Tipo Shell cURL
curl --request POST \
--url https://api.tracksale.co/v2/campaign/campaign_code/dispatch \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data '{\n "customers": [\n {\n "name":"Customers_name",\n "email":"Customers_email",\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n },\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ],\n "schedule_time": Timestamp_in_Seconds\n}'
Tipo Swift (NSURL)
import Foundation
let headers = [
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
]
let postData = NSData(data: "{
"customers": [
{
"name":"Customers_name",
"email":"Customers_email",
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
},
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
],
"schedule_time": Timestamp_in_Seconds
}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://api.tracksale.co/v2/campaign/campaign_code/dispatch")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Disparo de lotes:
O disparo deste lote deve ser efetuado usando as seguintes configurações
O body deve ser preenchido com o tempo que o disparo deve ser realizado em segundos, no
formato timestamp. Use 0 para um disparo instantâneo
Como no exemplo:
{
"time": Timestamp_in_seconds
}
Nome |
Tipo |
Obrigatório |
Descrição |
time |
Integer |
Sim |
Tempo que o disparo será realizado, em segundos no formato timestamp |
Exemplo de retorno:
{
"msg":"Dispatch executed!",
"customers":"Number_of_customers",
}
Exemplos de código : Disparo de lotes
Tipo Http
POST /v2/campaign/campaign_code/dispatch/Codigo_lote HTTP/1.1
Host: api.tracksale.co
Authorization: bearer TOKEN
Content-Type: application/json
Cache-Control: no-cache
{
"time": Timestamp_in_Seconds
}
Tipo C(libCurl)
curl -X POST \
https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"time": Timestamp_in_Seconds
}'
Tipo cURL
curl -X POST \
https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"time": Timestamp_in_Seconds
}'
Tipo C#
var client = new RestClient("https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "bearer TOKEN");
request.AddParameter("application/json", "{\n \"time\": Timestamp_in_Seconds\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Tipo Go
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote"
payload := strings.NewReader("{\n \"time\": Timestamp_in_Seconds\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "bearer TOKEN")
req.Header.Add("content-type", "application/json")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Tipo Java (OK HTTP)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n \"time\": Timestamp_in_Seconds\n}");
Request request = new Request.Builder()
.url("https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote")
.post(body)
.addHeader("authorization", "bearer TOKEN")
.addHeader("content-type", "application/json")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
Tipo Java Unirest
HttpResponse<String> response = Unirest.post("https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote")
.header("authorization", "bearer TOKEN")
.header("content-type", "application/json")
.header("cache-control", "no-cache")
.body("{\n \"time\": Timestamp_in_Seconds\n}")
.asString();
Tipo JavaScript Jquery AJAX
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote",
"method": "POST",
"headers": {
"authorization": "bearer TOKEN",
"content-type": "application/json",
"cache-control": "no-cache"
},
"data": "{\n \"time\": Timestamp_in_Seconds\n}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Tipo JavaScript XHR
var data = "{\n \"time\": Timestamp_in_Seconds\n}";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote");
xhr.setRequestHeader("authorization", "bearer TOKEN");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
Tipo NodeJS Native
var http = require("https");
var options = {
"method": "POST",
"hostname": "api.tracksale.co",
"port": null,
"path": "/v2/campaign/campaign_code/dispatch/Codigo_lote",
"headers": {
"authorization": "bearer TOKEN",
"content-type": "application/json",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("{\n \"time\": Timestamp_in_Seconds\n}");
req.end();
Tipo NodeJS Request
var request = require("request");
var options = { method: 'POST',
url: 'https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote',
headers:
{ 'cache-control': 'no-cache',
'content-type': 'application/json',
'authorization': 'bearer TOKEN' },
body: '{\n "time": Timestamp_in_Seconds\n}' };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Tipo NodeJS NodeJS Unirest
var unirest = require("unirest");
var req = unirest("POST", "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote");
req.headers({
"cache-control": "no-cache",
"content-type": "application/json",
"authorization": "bearer TOKEN"
});
req.send("{\n \"time\": Timestamp_in_Seconds\n}");
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Tipo Objective-C (NSURL)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"bearer TOKEN",
@"content-type": @"application/json",
@"cache-control": @"no-cache" };
NSData *postData = [[NSData alloc] initWithData:[@"{
"time": Timestamp_in_Seconds
}" dataUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Tipo OCaml(coHttp)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote" in
let headers = Header.init ()
|> fun h -> Header.add h "authorization" "bearer TOKEN"
|> fun h -> Header.add h "content-type" "application/json"
|> fun h -> Header.add h "cache-control" "no-cache"
in
let body = Cohttp_lwt_body.of_string "{\n \"time\": Timestamp_in_Seconds\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
Tipo PHP HttpRequest
<?php
$request = new HttpRequest();
$request->setUrl('https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'content-type' => 'application/json',
'authorization' => 'bearer TOKEN'
));
$request->setBody('{
"time": Timestamp_in_Seconds
}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Tipo PHP pecl_http
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append('{
"time": Timestamp_in_Seconds
}');
$request->setRequestUrl('https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'content-type' => 'application/json',
'authorization' => 'bearer TOKEN'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Tipo PHP cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"time\": Timestamp_in_Seconds\n}",
CURLOPT_HTTPHEADER => array(
"authorization: bearer TOKEN",
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Tipo Python http.client(Python 3)
import http.client
conn = http.client.HTTPSConnection("api.tracksale.co")
payload = "{\n \"time\": Timestamp_in_Seconds\n}"
headers = {
'authorization': "bearer TOKEN",
'content-type': "application/json",
'cache-control': "no-cache"
}
conn.request("POST", "/v2/campaign/campaign_code/dispatch/Codigo_lote", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tipo Python requests
import requests
url = "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote"
payload = "{\n \"time\": Timestamp_in_Seconds\n}"
headers = {
'authorization': "bearer TOKEN",
'content-type': "application/json",
'cache-control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Tipo Ruby (NET::Http)
require 'uri'
require 'net/http'
url = URI("https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["authorization"] = 'bearer TOKEN'
request["content-type"] = 'application/json'
request["cache-control"] = 'no-cache'
request.body = "{\n \"time\": Timestamp_in_Seconds\n}"
response = http.request(request)
puts response.read_body
Tipo Shell wget
wget --quiet \
--method POST \
--header 'authorization: bearer TOKEN' \
--header 'content-type: application/json' \
--header 'cache-control: no-cache' \
--body-data '{\n "time": Timestamp_in_Seconds\n}' \
--output-document \
- https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote
Tipo Shell Httpie
echo '{
"time": Timestamp_in_Seconds
}' | \
http POST https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote \
authorization:'bearer TOKEN' \
cache-control:no-cache \
content-type:application/json
Tipo Shell cURL
curl --request POST \
--url https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data '{\n "time": Timestamp_in_Seconds\n}'
Tipo Swift (NSURL)
import Foundation
let headers = [
"authorization": "bearer TOKEN",
"content-type": "application/json",
"cache-control": "no-cache"
]
let postData = NSData(data: "{
"time": Timestamp_in_Seconds
}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://api.tracksale.co/v2/campaign/campaign_code/dispatch/Codigo_lote")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Inserir Respostas
Fornecemos também um método de inserção de respostas. Esse método pode ser utilizado com os seguintes parâmetros.
- O método será:
POST
- A URL a ser usada deve ser:
https://api.tracksale.co/v2/answer
O body deve ser preenchido com o lote de respostas usando o seguinte padrão
{
"campaign_code": "Campaign_code",
"answers":[
{
"name":"Customers_name",
"email":"Customers_email",
"score":Customer_score,
"justification":""Customers_comment"",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}
Parâmetros
Parâmetro |
Tipo |
Obrigatório |
Descrição |
campaign_code |
String |
Sim |
Chave da campanha alvo. Obtida pelo método Listar
campanhas |
answers |
Array |
Sim |
Lista de respostas |
answers |
Tipo |
Obrigatório |
Descrição |
name |
String |
Sim |
Nome do cliente |
email |
String |
Sim, se o disparo foi realizado por email |
Email do cliente |
phone |
String |
Sim, se o disparo foi realizado por telefone |
Telefone do cliente |
identification |
String |
Não |
Atributo identificador único da sua empresa para o cliente |
score |
Integer |
Sim |
Score do cliente (entre 0 a 10) |
justification |
String |
Não |
Comentário do cliente |
create_time |
Integer |
Não |
Data/hora da resposta no padrão timestamp (em segundos) |
Exemplo de retorno:
{
"msg":"Number_of_answers Answer inserted"
"status": {
"invalid":Number_of_invalids,
"inserted":Number_of_insertions,
}
}
É possível também obter no retorno da requisição um array com os clientes que foram inseridos e os IDs de suas respectivas respostas.
Para isso, deve-se passar o parâmetro de query return_answer_id
com o valor 1
.
Assim retornaremos da seguinte forma:
{
"msg":"Number_of_answers Answer inserted"
"status": {
"invalid":Number_of_invalids,
"inserted":Number_of_insertions,
},
"answers": [
{
"answer_id": Answer_id,
"name": "Customers_name",
"email": "Customers_email",
"phone": Customers_phone,
"identification": "Customers_identification"
}
]
}
Exemplos de código : Inserir respostas
Tipo Http
POST /v2/answer HTTP/1.1
Host: api.tracksale
Content-Type: application/json
Authorization: bearer TOKEN
Cache-Control: no-cache
{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}
Tipo C(libCurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.tracksale.co/v2/answer");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "cache-control: no-cache");
headers = curl_slist_append(headers, "authorization: bearer TOKEN");
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);
Tipo cURL
curl -X POST \
https://api.tracksale.co/v2/answer \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}'
Tipo C#
var client = new RestClient("https://api.tracksale.co/v2/answer");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "bearer TOKEN");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Tipo Go
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tracksale.co/v2/answer"
payload := strings.NewReader("{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "bearer TOKEN")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Tipo Java (OK HTTP)
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}");
Request request = new Request.Builder()
.url("https://api.tracksale.co/v2/answer")
.post(body)
.addHeader("content-type", "application/json")
.addHeader("authorization", "bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
Tipo Java Unirest
HttpResponse<String> response = Unirest.post("https://api.tracksale.co/v2/answer")
.header("content-type", "application/json")
.header("authorization", "bearer TOKEN")
.header("cache-control", "no-cache")
.body("{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}")
.asString();
Tipo JavaScript Jquery AJAX
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.tracksale.co/v2/answer",
"method": "POST",
"headers": {
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
},
"data": "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}"
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Tipo JavaScript XHR
var data = "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}";
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://api.tracksale.co/v2/answer");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "bearer TOKEN");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
Tipo NodeJS Native
var http = require("https");
var options = {
"method": "POST",
"hostname": "api.tracksale.co",
"port": null,
"path": "/v2/answer",
"headers": {
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}");
req.end();
Tipo NodeJS Request
var request = require("request");
var options = { method: 'POST',
url: 'https://api.tracksale.co/v2/answer',
headers:
{ 'cache-control': 'no-cache',
'authorization': 'bearer TOKEN',
'content-type': 'application/json' },
body: '{\n "campaign_code": "campaign_code",\n "answers":[\n {\n "name":"customers_name",\n "email":"customers_Email",\n "score":Customer_score,\n "justification":"customers_comment",\n "create_time":Timestamp_in_seconds,\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ]\n}' };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Tipo NodeJS NodeJS Unirest
var unirest = require("unirest");
var req = unirest("POST", "https://api.tracksale.co/v2/answer");
req.headers({
"cache-control": "no-cache",
"authorization": "bearer TOKEN",
"content-type": "application/json"
});
req.send("{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}");
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Tipo Objective-C (NSURL)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"content-type": @"application/json",
@"authorization": @"bearer TOKEN",
@"cache-control": @"no-cache" };
NSData *postData = [[NSData alloc] initWithData:[@"{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}" dataUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.tracksale.co/v2/answer"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Tipo OCaml(coHttp)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://api.tracksale.co/v2/answer" in
let headers = Header.init ()
|> fun h -> Header.add h "content-type" "application/json"
|> fun h -> Header.add h "authorization" "bearer TOKEN"
|> fun h -> Header.add h "cache-control" "no-cache"
in
let body = Cohttp_lwt_body.of_string "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
Tipo PHP HttpRequest
<?php
$request = new HttpRequest();
$request->setUrl('https://api.tracksale.co/v2/answer');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN',
'content-type' => 'application/json'
));
$request->setBody('{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}');
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Tipo PHP pecl_http
<?php
$client = new http\Client;
$request = new http\Client\Request;
$body = new http\Message\Body;
$body->append('{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}');
$request->setRequestUrl('https://api.tracksale.co/v2/answer');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN',
'content-type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Tipo PHP cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.tracksale.co/v2/answer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}",
CURLOPT_HTTPHEADER => array(
"authorization: bearer TOKEN",
"cache-control: no-cache",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Tipo Python http.client(Python 3)
import http.client
conn = http.client.HTTPSConnection("api.tracksale.co")
payload = "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}"
headers = {
'content-type': "application/json",
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
conn.request("POST", "/v2/answer", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tipo Python requests
import requests
url = "https://api.tracksale.co/v2/answer"
payload = "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}"
headers = {
'content-type': "application/json",
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
Tipo Ruby (NET::Http)
require 'uri'
require 'net/http'
url = URI("https://api.tracksale.co/v2/answer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'bearer TOKEN'
request["cache-control"] = 'no-cache'
request.body = "{\n \"campaign_code\": \"campaign_code\",\n \"answers\":[\n {\n \"name\":\"customers_name\",\n \"email\":\"customers_Email\",\n \"score\":Customer_score,\n \"justification\":\"customers_comment\",\n \"create_time\":Timestamp_in_seconds,\n \"tags\" : [\n {\n \"name\" : \"TagExample\",\n \"value\" : \"TagExample\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body
Tipo Shell wget
wget --quiet \
--method POST \
--header 'content-type: application/json' \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--body-data '{\n "campaign_code": "campaign_code",\n "answers":[\n {\n "name":"customers_name",\n "email":"customers_Email",\n "score":Customer_score,\n "justification":"customers_comment",\n "create_time":Timestamp_in_seconds,\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ]\n}' \
--output-document \
- https://api.tracksale.co/v2/answer
Tipo Shell Httpie
echo '{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}' | \
http POST https://api.tracksale.co/v2/answer \
authorization:'bearer TOKEN' \
cache-control:no-cache \
content-type:application/json
Tipo Shell cURL
curl --request POST \
--url https://api.tracksale.co/v2/answer \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data '{\n "campaign_code": "campaign_code",\n "answers":[\n {\n "name":"customers_name",\n "email":"customers_Email",\n "score":Customer_score,\n "justification":"customers_comment",\n "create_time":Timestamp_in_seconds,\n "tags" : [\n {\n "name" : "TagExample",\n "value" : "TagExample"\n }\n ]\n }\n ]\n}'
Tipo Swift (NSURL)
import Foundation
let headers = [
"content-type": "application/json",
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
]
let postData = NSData(data: "{
"campaign_code": "campaign_code",
"answers":[
{
"name":"customers_name",
"email":"customers_Email",
"score":Customer_score,
"justification":"customers_comment",
"create_time":Timestamp_in_seconds,
"tags" : [
{
"name" : "TagExample",
"value" : "TagExample"
}
]
}
]
}".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://api.tracksale.co/v2/answer")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
Inserir Notas Internas
Fornecemos também um método de inserção de notas internas. Esse método pode ser utilizado com os seguintes parâmetros.
- O método será:
POST
- A URL a ser usada deve ser:
https://api.tracksale.co/v2/note
O body deve ser preenchido com o comentário, usando o seguinte padrão
{
"comment": "Comment_Text",
"answer_id": Answer_ID
}
Parâmetros
Parâmetro |
Tipo |
Obrigatório |
Descrição |
comment |
String |
Sim |
Comentário a ser inserido na nota |
answer_id |
Integer |
Não |
Id da resposta, caso não seja informado é necessário utilizar o filter abaixo |
filter |
Array |
Não |
Se o ID da resposta não for enviado, o Filter deverá ser enviado usando o seguinte padrão: |
{
"comment": "Comment_Text",
"filter": {
"email":"Customer_Email",
"start_date":"Start_Date",
"end_date":"End_date"
}
}
Filtros |
Tipo |
Obrigatório |
Descrição |
email |
String |
Não, para utilizar o filter é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Email do cliente |
phone |
String |
Não, para utilizar o filter é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Telefone do cliente |
identification |
String |
Não, para utilizar o filter é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Identification do cliente |
start_date |
Date |
Não, para utilizar o filter é necessário definir uma data |
Data pode ser utilizada no formato AAAA-MM-DD. Ex: 2017-01-31 |
end_date |
Date |
Não, para utilizar o filter é necessário definir uma data |
Data pode ser utilizada no formato AAAA-MM-DD. Ex: 2017-01-31 |
campaign_code |
String |
Não |
Code da campanha |
Exemplo de retorno:
{
"msg":"Success",
"answer_id":123456
}
Fornecemos um método de solicitação de preenchimento de tags vazias. Esse método pode ser utilizado com os seguintes parâmetros.
- O método será:
POST
- A URL a ser usada deve ser:
https://api.tracksale.co/v2/fill-empty-tags
O body deve ser enviado com as tags a serem preenchidas na resposta, usando o seguinte padrão
Limites de envio:
1 cliente por requisição.
Máximo de 50 tags por requisição.
{
"answer_id": Answer_ID,
"tags": [
{
"name": "Tag name",
"value": "Tag value"
},
{
"name": "Tag name",
"value": "Tag value"
}
]
}
Parâmetros
Parâmetro |
Tipo |
Obrigatório |
Descrição |
answer_id |
Integer |
Não |
Id da resposta, caso não seja informado é necessário utilizar o
abaixo |
tags |
Array |
Sim |
Nome da tag |
customer |
Array |
Não |
Se o ID da resposta não for enviado, o customer deverá ser enviado usando o seguinte padrão: |
tags |
Tipo |
Obrigatório |
Descrição |
name |
String |
Sim |
Nome da tag |
value |
String |
Sim |
Valor da Tag |
{
"campaign_code": "Campaign_code",
"customer": {
"email":"Customer_Email",
},
"tags": [
{
"name": "Tag name",
"value": "Tag value"
},
{
"name": "Tag name",
"value": "Tag value"
}
]
}
customer |
Tipo |
Obrigatório |
Descrição |
email |
String |
Não, para utilizar o customer é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Email do cliente |
phone |
String |
Não, para utilizar o customer é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Telefone do cliente |
identification |
String |
Não, para utilizar o customer é necessário utilizar pelo menos um identificador (e-mail ou phone ou identification) |
Identification do cliente |
campaign_code |
String |
Não |
Code da campanha |
Exemplo de retorno:
{
"answer_id":12345,
"msg":"Request received successfully!"
}
Consultar lotes de rascunho
Para listar os lotes de rascunho utilizaremos a seguinte configuração
- O método usado será :
GET
- A URL usada será :
https://api.tracksale.co/v2/campaign/{code}/draft-lot
Este método é responsável por listar todos os lotes de rascunho da campanha.
Onde code é o código da campanha que você deseja obter informações.
Certifique-se de usar o parâmetro code
.
Exemplo de retorno:
{
"lot": [
{
"code": "Lot_code",
"create_time": "Create_Time",
"total_dispatches": "Total_dispatches",
}
]
}
Descartar lotes de rascunho
Para descartar os lotes de rascunho utilizaremos a seguinte configuração
- O método usado será :
POST
- A URL usada será :
https://api.tracksale.co/v2/campaign/{code}/discard-lot/{lot_code}
Este método é responsável por descartar todos os lotes de rascunho da campanha.
Onde lot_code é o código do lote que você deseja realizar o descarte.
Certifique-se de usar o parâmetro lot_code
.
Exemplo de retorno:
{
"success": true
}
Reports é nosso método para geração de relatórios, é responsável por mostrar detalhes de todas suas campanhas ou de uma campanha.
Toda a comunicação da API é feita a partir da URL base
https://api.tracksale.co/v2/report/DETALHES
.
Onde DETALHES deverá ser substituído pelos detalhes que você deseja
obter através da requisição
O método a ser usado será o GET
O header deve ser preenchido com os parametros onde
-
Key
Authorization
-
Value
bearer TOKEN
Comentários
O método a ser usado deve ser :GET
A URL a ser usada deve ser :https://api.tracksale.co/v2/report/answer
Método responsável por retornar os comentários dos clientes.
Parâmetros
Parâmetro |
Tipo |
Padrão |
Obrigatório |
Descrição |
start |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
end |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
limit |
Integer |
Por padrão mostrará 10 comentários por requisição. |
Não |
Total de comentários a serem retornados. Utilize -1 para retornar todos.
|
tags |
Boolean |
Por padrão é falso, ou seja, nenhuma tag será mostrada. |
Não |
Retorna as tags referentes às respostas |
justifReturn |
String |
Por padrão mostraremos o formato "level" |
Não |
Formato de retorno das justificativas.
"array" - Retorna todas em um único array.
"level" - Retorna formato JSON com subníveis de justificativas
agrupadas.
|
codes |
String |
Por padrão mostrará os comentários de todas as campanhas |
Não |
Usado para mostrar os comentários de uma campanha específica, ou os
comentários de todas as campanhas. Pode-se também mostrar os comentários de
mais de uma campanha por vez, para isso utilize a vírgula como separador
(Ex: codes=52,51,50 mostrará os comentários das campanhas cujo Campaign_code é
50, 51 e 52) |
review |
Integer |
Por padrão é 0, ou seja, nenhum comentário é retornado |
Não |
Usado para mostrar as notas e comentários de perguntas do tipo Review. |
nps_secondary |
Integer |
Por padrão é 0, ou seja, nenhum comentário é retornado |
Não |
Usado para mostrar as notas e comentários das demais perguntas do tipo NPS além da pergunta do tipo NPS obrigatória em toda campanha. |
open_question |
Integer |
Por padrão é 0, ou seja, nenhum comentário é retornado |
Não |
Usado para mostrar os comentários de perguntas do tipo Pergunta Aberta. |
csat |
Integer |
Por padrão é 0, ou seja, nenhum comentário é retornado |
Não |
Usado para mostrar os comentários de perguntas do tipo CSAT. |
return_update_time |
Boolean |
Por padráo é false |
Não |
Retorna a data da última alteração efetuada na opinião, como por exemplo, mudanças de responsável, status ou categoria. |
Exemplo de retorno:
[
{
"time": 1454340407,
"type": "Email",
"name": "Customers_name",
"email": "Customers_email",
"identification": null,
"phone": "Customers_phone",
"alternative_email": "Customers_email",
"alternative_phone": "Customers_phone",
"nps_answer": Score,
"last_nps_answer": Score,
"nps_comment": Comment,
"campaign_name": "Campaign_name",
"campaign_code": "Campaign_code",
"lot_code": "ABCDEFG123",
"id": 6805511,
"deadline": null,
"elapsed_time": 17,
"dispatch_time": null,
"reminder_time": null,
"status": "Status",
"priority": "None",
"assignee": "Assignee_name",
"picture": null,
"tags": [],
"categories": [],
"justifications": [],
"review": [],
"nps_secondary": [],
"open_question": [],
"csat": [],
"update_time": 1454340407
}
]
Disparos
O método a ser usado deve ser : GET
A URL a ser usada deve ser:https://api.tracksale.co/v2/report/dispatch
Método responsável por retornar os disparos e seus dados, como clientes inseridos , a hora que foi realizado,
seu status e os clientes que foram inseridos no mesmo.
[
{
"campaign": {
"name": "Camapaign_name",
"code": "Campaign_code"
},
"dispatch_code": "Code_of_dispatch",
"status": Status_of_dispatch,
"create_time": "Campaign_creation_time",
"customers": [
{
"name": "Customers_name",
"identification": null,
"email": "Customers_email",
"phone": "Customers_phone",
"dispatch_time": "Code_of_dispatch",
"status": "Status_of_dispatch",
"has_answered": "Status_of_answer"
}
]
}
]
Parâmetros
Parâmetro |
Tipo |
Padrão |
Obrigatório |
Descrição |
start |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
end |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
codes |
String |
Por padrão mostrará os comentários de todas as campanhas |
Não |
Usado para mostrar os comentários de uma campanha específica, ou os
comentários de todas as campanhas. Pode-se também mostrar os comentários de
mais de uma campanha por vez, para isso utilize a vírgula como separador.
(Ex: codes=52,51,50 mostrará os comentários das campanhas cujo Campaign_code é
50, 51 e 52) |
NPS
O método a ser usado deve ser : GET
A URL a ser usada deve ser:https://api.tracksale.co/v2/report/nps
Método responsável por retornar o numero de disparos, os numeros de detratores,
promotores e neutros e suas respectivas porcentagens e também o valor do nps.
Parâmetros
Parâmetro |
Tipo |
Padrão |
Obrigatório |
Descrição |
start |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data inicial no formato aaaa-mm-dd |
end |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data final no formato aaaa-mm-dd |
compare |
Boolean |
Por padráo é false |
Não |
Retorna os dados do NPS referente ao período anterior do filtro de data.
|
codes |
String |
Por padrão mostrará os comentários de todas as campanhas |
Não |
Usado para mostrar os comentários de uma campanha específica, ou os
comentários de todas as campanhas. Pode-se também mostrar os comentários de
mais de uma campanha por vez, para isso utilize a vírgula como separador
(Ex: codes=52,51,50 mostrará os comentários das campanhas cujo Campaign_code é
50, 51 e 52) |
Exemplo de retorno:
{
"dispatches": Number_of_dispatches,
"promoters": Number_of_promoter,
"detractors": Number_of_detractors,
"passives": Number_of_neutrals,
"detractors_percentage": Percentage_of_detractors,
"passives_percentage": Percentage_of_neutrals,
"promoters_percentage": Percentage_of_promoters,
"nps": Period_NPS,
"compare": {
"dispatches": Number_of_dispatches,
"promoters": Number_of_promoter,
"detractors": Number_of_detractors,
"passives": Number_of_neutrals,
"detractors_percentage": Percentage_of_detractors,
"passives_percentage": Percentage_of_neutrals,
"promoters_percentage": Percentage_of_promoters,
"nps": Period_NPS,
}
}
Categorias
O método a ser usado deve ser :GET
A URL a ser usada deve ser: https://api.tracksale.co/v2/report/category
Método responsável por retornar as categorias das campanhas de acordo com o NPS.
Parâmetros
Parâmetro |
Tipo |
Padrão |
Obrigatório |
Descrição |
start |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
end |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
codes |
String |
Por padrão mostrará os comentários de todas as campanhas |
Não |
Usado para mostrar os comentários de uma campanha específica, ou os
comentários de todas as campanhas. Pode-se também mostrar os comentários de
mais de uma campanha por vez, para isso utilize a vírgula como separador.
(Ex: codes=52,51,50 mostrará os comentários das campanhas cujo Campaign_code é
50, 51 e 52) |
Exemplo de retorno:
[
{
"id": 6805511,
"name": "Product",
"color": "#F8D347",
"total": 25,
"nps": Period_NPS,
"total": total,
}
]
Obter status das campanhas
O método a ser usado deve ser :GET
A URL a ser usada deve ser: https://api.tracksale.co/v2/report/status
Método responsável por retornar os status das campanhas.
Parâmetros
Parâmetro |
Tipo |
Padrão |
Obrigatório |
Descrição |
start |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
end |
Date |
Por padrão mostraremos resultados 30 dias anteriores a data que está
realizando a requisição (Ex: se você está fazendo essa requisição no
dia 31/01/2017 e não incluir o intervalo inicial e final que você deseja
fazer sua pesquisa, o período retornado será de 01/01/2017 a
31/01/2017) |
Não |
Data pode ser utilizada no formato AAAA-MM-DD ou especificando a hora no formato AAAA-MM-DDTHH:mm:ss. Ex: 2017-01-31T12:00:00 |
codes |
String |
Por padrão mostrará os comentários de todas as campanhas |
Não |
Usado para mostrar os comentários de uma campanha específica, ou os
comentários de todas as campanhas. Pode-se também mostrar os comentários de
mais de uma campanha por vez, para isso utilize a vírgula como separador.
(Ex: codes=52,51,50 mostrará os comentários das campanhas cujo Campaign_code é
50, 51 e 52) |
Exemplo de retorno:
[
{
"id": 76,
"name": "Pendente Cliente",
"total": 25,
"color": "#F8D347"
}
]
Exemplos de código : Reports /DETALHES
Tipo Http
GET /v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM HTTP/1.1
Host: api.tracksale
Authorization: bearer TOKEN
Cache-Control: no-cache
Tipo C(libCurl)
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "cache-control: no-cache");
headers = curl_slist_append(headers, "authorization: bearer TOKEN");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
Tipo cURL
curl -X GET \
'https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM' \
-H 'authorization: bearer TOKEN' \
-H 'cache-control: no-cache'
Tipo C#
var client = new RestClient("https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "bearer TOKEN");
IRestResponse response = client.Execute(request);
Tipo Go
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("authorization", "bearer TOKEN")
req.Header.Add("cache-control", "no-cache")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
Tipo Java (OK HTTP)
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM")
.get()
.addHeader("authorization", "bearer TOKEN")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
Tipo Java Unirest
HttpResponse<String> response = Unirest.get("https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM")
.header("authorization", "bearer TOKEN")
.header("cache-control", "no-cache")
.asString();
Tipo JavaScript Jquery AJAX
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM",
"method": "GET",
"headers": {
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response) {
console.log(response);
});
Tipo JavaScript XHR
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM");
xhr.setRequestHeader("authorization", "bearer TOKEN");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
Tipo NodeJS Native
var http = require("https");
var options = {
"method": "GET",
"hostname": "api.tracksale.co",
"port": null,
"path": "/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM",
"headers": {
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
Tipo NodeJS Request
var request = require("request");
var options = { method: 'GET',
url: 'https://api.tracksale.co/v2/report/DETALHES',
qs: { start: 'DATA_INICIO', end: 'DATA_FIM' },
headers:
{ 'cache-control': 'no-cache',
'authorization': 'bearer TOKEN' } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Tipo NodeJS NodeJS Unirest
var unirest = require("unirest");
var req = unirest("GET", "https://api.tracksale.co/v2/report/DETALHES");
req.query({
"start": "DATA_INICIO",
"end": "DATA_FIM"
});
req.headers({
"cache-control": "no-cache",
"authorization": "bearer TOKEN"
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Tipo Objective-C (NSURL)
#import <Foundation/Foundation.h>
NSDictionary *headers = @{ @"authorization": @"bearer TOKEN",
@"cache-control": @"no-cache" };
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:headers];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
Tipo OCaml(coHttp)
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM" in
let headers = Header.init ()
|> fun h -> Header.add h "authorization" "bearer TOKEN"
|> fun h -> Header.add h "cache-control" "no-cache"
in
Client.call ~headers `GET uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
Tipo PHP HttpRequest
<?php
$request = new HttpRequest();
$request->setUrl('https://api.tracksale.co/v2/report/DETALHES');
$request->setMethod(HTTP_METH_GET);
$request->setQueryData(array(
'start' => 'DATA_INICIO',
'end' => 'DATA_FIM'
));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN'
));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
Tipo PHP pecl_http
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://api.tracksale.co/v2/report/DETALHES');
$request->setRequestMethod('GET');
$request->setQuery(new http\QueryString(array(
'start' => 'DATA_INICIO',
'end' => 'DATA_FIM'
)));
$request->setHeaders(array(
'cache-control' => 'no-cache',
'authorization' => 'bearer TOKEN'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Tipo PHP cURL
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: bearer TOKEN",
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Tipo Python http.client(Python 3)
import http.client
conn = http.client.HTTPSConnection("api.tracksale.co")
headers = {
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
conn.request("GET", "/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
Tipo Python requests
import requests
url = "https://api.tracksale.co/v2/report/DETALHES"
querystring = {"start":"DATA_INICIO","end":"DATA_FIM"}
headers = {
'authorization': "bearer TOKEN",
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)
Tipo Ruby (NET::Http)
require 'uri'
require 'net/http'
url = URI("https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'bearer TOKEN'
request["cache-control"] = 'no-cache'
response = http.request(request)
puts response.read_body
Tipo Shell wget
wget --quiet \
--method GET \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache' \
--output-document \
- 'https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM'
Tipo Shell Httpie
http GET 'https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM' \
authorization:'bearer TOKEN' \
cache-control:no-cache
Tipo Shell cURL
curl --request GET \
--url 'https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM' \
--header 'authorization: bearer TOKEN' \
--header 'cache-control: no-cache'
Tipo Swift (NSURL)
import Foundation
let headers = [
"authorization": "bearer TOKEN",
"cache-control": "no-cache"
]
let request = NSMutableURLRequest(url: NSURL(string: "https://api.tracksale.co/v2/report/DETALHES?start=DATA_INICIO&end=DATA_FIM")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()