Introduction
Ejemplo de consulta con las 2 keys dentro de los headers
curl --location --request GET 'https://api-example.loyal.ink/api/v2/others' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/others")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/others", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/others", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Todas las peticiones a la API requieren llevar en el header 2 parametros, PUBLIC_KEY y LOYALINK_SIGNATURE.
Ambas credenciales deben ser solicitadas a soporte@alco.cl
Essential Get
Get All Structures
curl --location --request GET 'https://api-example.loyal.ink/api/v2/structures' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/structures")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/structures", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/structures", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
El comando retorna un json de este tipo:
{
"status": 200,
"data": [
{
"code": "bo_test_structure_17"
},
{
"code": "bo_test_structure_18"
},
{
"code": "bo_test_structure_19"
},
{
"code": "bo_test_structure_21"
}
]
}
Este endpoint obtiene únicamente el campo code de la tabla structures, y su request http es GET https://api-example.loyal.ink/api/v2/structures
.
Get Structures Tree with filters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/structures/results?id_level_6=271&status=0' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/structures/results?id_level_6=271&status=0")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/structures/results?id_level_6=271&status=0", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/structures/results?id_level_6=271&status=0", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
El comando retorna un json de este tipo:
{
"status": 200,
"total": 1,
"data": [
{
"level_2": "name_level_2_from_structure_with_id_level_6_271",
"level_3": "name_level_3_from_structure_with_id_level_6_271",
"level_4": "name_level_4_from_structure_with_id_level_6_271",
"level_5": "name_level_5_from_structure_with_id_level_6_271",
"level_6": "name_level_6_from_structure_with_id_level_6_271",
"level_7": "",
"id_level_2": "103",
"id_level_3": "863",
"id_level_4": "864",
"id_level_5": "865",
"id_level_6": "271",
"id_level_7": "",
"code": "code_from_structure_with_id_level_6_271"
}
]
}
Parameters active & emails
Parameter | Required | Description |
---|---|---|
status | false | 1 para estructuras activas (son las que están visibles en los filtros de la aplicación loyalink) y 0 para estructuras inactivas (la omisión del parámetro implica que se obtendrá toda la lista sin discriminar el status). |
id_level_2 | false | Admite ids de estructuras de nivel 2. |
id_level_3 | false | Admite ids de estructuras de nivel 3. |
id_level_4 | false | Admite ids de estructuras de nivel 4. |
id_level_5 | false | Admite ids de estructuras de nivel 5. |
id_level_6 | false | Admite ids de estructuras de nivel 6. |
id_level_7 | false | Admite ids de estructuras de nivel 7. |
Este endpoint obtiene el árbol de estructuras para todas las que coincidan con el criterio filtrado, y su request http es GET https://api-example.loyal.ink/api/v2/structures/results
.
Get All Segments
curl --location --request GET 'https://api-example.loyal.ink/api/v2/segments' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/segments")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/segments", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/segments", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
El comando retorna un json de este tipo:
{
"status": 200,
"data": [
{
"id": 101,
"code_2": "seg_genero",
"code_3": "",
"level": 2
},
{
"id": 102,
"code_2": "seg_genero",
"code_3": "gen_1",
"level": 3
},
{
"id": 103,
"code_2": "seg_genero",
"code_3": "gen_2",
"level": 3
},
{
"id": 104,
"code_2": "seg_genero",
"code_3": "gen_3",
"level": 3
},
{
"id": 105,
"code_2": "seg_edad",
"code_3": "",
"level": 2
},
{
"id": 106,
"code_2": "seg_edad",
"code_3": "edad_1",
"level": 3
}
]
}
Este endpoint obtiene los campos id, code_2, code_3 y level de la tabla segments, y su request http es GET https://api-example.loyal.ink/api/v2/segments
.
Get All Others
curl --location --request GET 'https://api-example.loyal.ink/api/v2/others' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/others")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/others", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/others", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
El comando retorna un json de este tipo:
{
"status": 200,
"data": [
{
"id": 101,
"code": "otros_example1"
},
{
"id": 102,
"code": "otros_example2"
},
{
"id": 103,
"code": "otros_example3"
}
]
}
Este endpoint obtiene los campos id y code de la tabla others, y su request http es GET https://api-example.loyal.ink/api/v2/others
.
Get All Polls
curl --location --request GET 'https://api-example.loyal.ink/api/v2/polls' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/polls")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/polls", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/polls", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
El comando retorna un json de este tipo:
{
"status": 200,
"data": [
{
"code": "TEST_CODE_1"
},
{
"code": "TEST_CODE_2"
},
{
"code": "TEST_CODE_3"
}
]
}
Este endpoint obtiene únicamente el campo code de la tabla polls, y su request http es GET https://api-example.loyal.ink/api/v2/polls
.
Get Unsubscribed emails
Get Unsubscribed Emails
Este endpoint obtiene la lista de correos desuscritos, y su request http es GET https://api-example.loyal.ink/api/v2/emails/unsubscribed?from=<START_DATE>&to=<END_DATE>
.
Parameters from & to
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD. |
to | true | Fecha en formato YYYY-MM-DD. |
Example HTTP Request With Parameters
GET https://api-example.loyal.ink/api/v2/emails/unsubscribed?from=2019-05-15&to=2019-05-29
Request Restrictions
- El rango de días entre from y to puede ser de a lo más 15 días.
- Para consultar todos correos desuscritos de un solo día, se debe enviar como parametros from y to con el mismo valor.
Response Sample 1
Respuesta obtenida:
{
"status": 400,
"message": "Campo no encontrado.",
"error": {
"internal_code": 601,
"detailed_message": "Falta un campo requerido.",
"wrong_field": "from",
"index_register": 0,
"trace_id": "5f23850f44664734925461"
}
}
Petición sin los parametros from y to.
GET https://api-example.loyal.ink/api/v2/emails/unsubscribed
Response Sample 2
Respuesta obtenida:
{
"status": 400,
"message": "Campo con error de formato.",
"error": {
"internal_code": 603,
"detailed_message": "Error de formato en la fecha (formato aceptado YYYY-MM-DD).",
"wrong_field": "to",
"index_register": 0,
"trace_id": "5f238d1944664171760529"
}
}
Petición de formato invalido.
GET https://api-example.loyal.ink/api/v2/emails/unsubscribed?from=2018-05-15&to=322322sa
Response Sample 3
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"id": 18,
"email": "example@gmail.com",
"type": 1
},
{
"id": 19,
"email": "example2@gmail.com",
"type": 1
}
]
}
Petición exitosa.
Post emails to unsubscribe
Post emails
curl --location --request POST 'https://api-example.loyal.ink/api/v2/users/unsubscribe' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: text/plain' \
--data-raw '{
"emails": "example1@loyal.ink,example2@loyal.ink"
}'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/users/unsubscribe")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"emails\": \"example1@loyal.ink,example2@loyal.ink\"\r\n}"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "{\r\n \"emails\": \"example1@loyal.ink,example2@loyal.ink\"\r\n}"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'text/plain'
}
conn.request("POST", "/api/v2/users/unsubscribe", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"emails\": \"example1@loyal.ink,example2@loyal.ink\"\r\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/users/unsubscribe", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Este endpoint permite añadir correos a la lista de desuscritos incluyéndolos como data-raw, y su request http es POST https://api-example.loyal.ink/api/v2/users/unsubscribe
.
Response Sample 1
Respuesta obtenida:
{
"status": 400,
"message": "Registros ya existentes.",
"error": {
"internal_code": 626,
"detailed_message": "Ningun registro pudo ser insertado, estos ya han sido desuscritos.",
"trace_id": "603e9fa0168f0518125454"
}
}
En caso de que se intente añadir solo correos preexistentes en la lista (basta con que se logre insertar un correo para que la respuesta sea 200).
Response Sample 2
Respuesta obtenida:
{
"status": 200,
"message": "Los registros han sido insertados exitosamente."
}
Post exitoso para al menos uno de los correos que se intentó desuscribir.
Get Unsubscribed Phones
Get Unsubscribed Phones
Este endpoint obtiene la lista de teléfonos desuscritos, y su request http es:
GET https://api-example.loyal.ink/api/v2/phones/unsubscribed?from=<START_DATE>&to=<END_DATE>.
Parameters from & to
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD. |
to | true | Fecha en formato YYYY-MM-DD. |
Example HTTP Request With Parameters
Ejemplo de la url con parámetros:
GET https://api-example.loyal.ink/api/v2/phones/unsubscribed?from=2023-05-15&to=2023-05-29
Request Restrictions
- El rango de días entre from y to puede ser de a lo más 15 días.
- Para consultar todos los teléfonos desuscritos de un solo día, se debe enviar como parametros from y to con el mismo valor.
Response Sample 1
Petición sin los parametros from y to.
GET https://api-example.loyal.ink/api/v2/phones/unsubscribed
Respuesta obtenida:
{
"status": 400,
"message": "Campo no encontrado.",
"error": {
"internal_code": 601,
"detailed_message": "Falta un campo requerido.",
"wrong_field": "from",
"index_register": 0,
"trace_id": "6490b99c1bcb8356421489"
}
}
Response Sample 2
Petición de formato inválido.
GET https://api-example.loyal.ink/api/v2/phones/unsubscribed?from=2023-05-15&to=322322sa
Respuesta obtenida:
{
"status": 400,
"message": "Campo con error de formato.",
"error": {
"internal_code": 603,
"detailed_message": "Error de formato en la fecha (formato aceptado YYYY-MM-DD).",
"wrong_field": "to",
"index_register": 0,
"trace_id": "6490b9e11bcb8166600487"
}
}
Response Sample 3
Petición exitosa.
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"id": 1,
"phone": "123456",
"Created": "2023-05-30T00:00:00Z"
},
{
"id": 2,
"phone": "654321",
"Created": "2023-05-30T00:00:00Z"
}
]
}
Get Users
Get Users
Este endpoint obtiene los campos email, active y profile_name de la tabla users, y su request http es GET https://api-example.loyal.ink/api/v2/users?active=<ACTIVE_STATUS>&emails=<EMAILS_LIST>
.
Parameters active & emails
Parameter | Required | Description |
---|---|---|
active | false | Estado de los usuarios que se desea obtener en la respuesta (ej: active=0 => usuarios 100% inactivos, active=1 => usuarios activos más los pendientes de activación vía correo que se verán reflejados con active=2) |
emails | false | Lista de correos a consultar separados por coma (ej: emails=email1@test.com,email2@test.com,email3@test.com) |
Example HTTP Request With Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email2@test.com,email3@test.com&active=1' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email2@test.com,email3@test.com&active=1")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/users?emails=email1@test.com,email2@test.com,email3@test.com&active=1", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email2@test.com,email3@test.com&active=1", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email2@test.com,email3@test.com&active=1
Request Restrictions
- Los valores aceptados en el campo active pueden ser únicamente 0 o 1, donde 1 incluye los pendientes de activación vía correo ya que en cualquier momento podrían pasar a ser usuarios activos.
- Los valores dentro del campo emails deben ser separados por una coma (,) y deben ser correos validos.
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"total": 4,
"data": [
{
"email": "email1@test.com",
"active": 2,
"profile_name": "profile1312"
},
{
"email": "email2@test.com",
"active": 1,
"profile_name": "profile1312"
},
{
"email": "email3@test.com",
"active": 0,
"profile_name": "profile1312"
},
{
"email": "email4@test.com",
"active": 1,
"profile_name": "profile1312"
}
]
}
Lo que se obtiene al consultar la lista completa de usuarios con GET https://api-example.loyal.ink/api/v2/users
(distintos estados para cada usuario).
Response Sample 2
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"email": "email1@test.com",
"active": 2,
"profile_name": "profile1312"
},
{
"email": "email2@test.com",
"active": 1,
"profile_name": "profile1312"
},
{
"email": "email4@test.com",
"active": 1,
"profile_name": "profile1312"
}
]
}
Lo que se obtiene al utilizar el parámetro active=1 (GET https://api-example.loyal.ink/api/v2/users?active=1
, solo usuarios con estado 1 o 2).
Response Sample 3
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"email": "email1@test.com",
"active": 2,
"profile_name": "profile1312"
},
{
"email": "email3@test.com",
"active": 0,
"profile_name": "profile1312"
}
]
}
Obtener usuarios basados en una lista de correos utilizando GET https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email3@test.com,email5@test.com
(email5@test.com no existe por lo tanto no es retornado).
Response Sample 4
Respuesta obtenida:
{
"status": 200,
"total": 1,
"data": [
{
"email": "email1@test.com",
"active": 2,
"profile_name": "profile1312"
}
]
}
Obtener usuarios basados en el parámetro active y además una lista de correos utilizando GET https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,email3@test.com&active=1
(email3@test.com tiene active=0 por lo que no se retorna).
Response Sample 5
Respuesta obtenida:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 610,
"detailed_message": "El valor de active contiene un valor incorrecto.",
"wrong_field": "active",
"index_register": 0,
"trace_id": "5fc9328a634e9907586162"
}
}
Petición con el campo active incorrecto utilizando GET https://api-example.loyal.ink/api/v2/users?active=5
.
Response Sample 6
Respuesta obtenida:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 612,
"detailed_message": "Unos de los emails presenta un formato incorrecto",
"wrong_field": "emails",
"index_register": 0,
"trace_id": "5fc932e5634e9182441142"
}
}
Petición con algún email incorrecto utilizando GET https://api-example.loyal.ink/api/v2/users?emails=email1@test.com,wrongemail2test.com,email3@test.com
.
Edit Users Status
PUT Edit Users Status
Este endpoint permite cambiar el estado de los usuarios, y su request http es PUT http://api-example.loyal.ink/api/v2/users
.
Accepted Parameters In Body
Parameter | Required | Description |
---|---|---|
active | true | Admite los valores 0 ("active":0 => para desactivar usuarios) y 1 ("active":1 => para activar usuarios) |
emails | true | Lista de correos que se desea desactivar/activar (ej: "emails":"email1@test.com,email2@test.com,email3@test.com") |
Example With Parameters
curl --location --request PUT 'PUT https://api-example.loyal.ink/api/v2/users' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: text/plain' \
--data-raw '{
"emails": "email1@test.com,email2@test.com,email3@test.com",
"active": 0
}'
require "uri"
require "net/http"
url = URI("PUT https://api-example.loyal.ink/api/v2/users")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"emails\": \"email1@test.com,email2@test.com,email3@test.com\",\r\n \"active\": 0\r\n}"
response = http.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "{\r\n \"emails\": \"email1@test.com,email2@test.com,email3@test.com\",\r\n \"active\": 0\r\n}"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'text/plain'
}
conn.request("PUT", "/api/v2/users", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"emails\": \"email1@test.com,email2@test.com,email3@test.com\",\r\n \"active\": 0\r\n}";
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("PUT https://api-example.loyal.ink/api/v2/users", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Endpoint PUT http://api-example.loyal.ink/api/v2/users
con los parámetros "emails" y "active" en el body.
Response Sample 1
Respuesta obtenida:
{
"status": 400,
"message": "Campo no encontrado.",
"error": {
"internal_code": 601,
"detailed_message": "Falta un campo requerido.",
"wrong_field": "emails",
"index_register": 0,
"trace_id": "5ff784dd57d5a238106423"
}
}
Respuesta que se obtiene al no enviar el campo "emails" en el body.
Response Sample 2
Respuesta obtenida:
{
"status": 400,
"message": "Campo no encontrado.",
"error": {
"internal_code": 601,
"detailed_message": "Falta un campo requerido.",
"wrong_field": "active",
"index_register": 0,
"trace_id": "5ff7858757d5a986338318"
}
}
Respuesta que se obtiene al no enviar el campo "active" en el body.
Response Sample 3
Respuesta obtenida:
{
"status": 400,
"message": "Error al actualizar.",
"error": {
"internal_code": 627,
"detailed_message": "Ninguno de los emails esta asociado a algun usuario.",
"trace_id": "5ff785e957d5a354633538"
}
}
Respuesta que se obtiene cuando ninguno de los correos existe en la lista de usuarios.
Response Sample 4
Respuesta obtenida:
{
"status": 200,
"message": "El registro ha sido actualizado exitosamente."
}
Respuesta exitosa.
Get Results Number of Pages
Get Results Number of Pages
Este endpoint permite obtener la cantidad de páginas en lotes de a 100 registros que hay en un determinado rango de fechas cuando se desea consultar resultados, y su request http es GET https://api-example.loyal.ink/api/v2/surveys/results/number-of-pages?from=<from>&to=<to>&date_type=<date_type>
.
Accepted Parameters
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 00:00:00". |
to | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 59:59:59". |
date_type | true | Admite los valores created (fecha de creación/inserción del registro en la bd), date_poll (fecha de encuesta) o date_exp (fecha de experiencia/interacción). |
id_level_2 | false | Admite ids de estructuras con nivel 2 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_3 | false | Admite ids de estructuras con nivel 3 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_4 | false | Admite ids de estructuras con nivel 4 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_5 | false | Admite ids de estructuras con nivel 5 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_6 | false | Admite ids de estructuras con nivel 6 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_7 | false | Admite ids de estructuras con nivel 7 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
Request Restrictions
- La diferencia entre from y to no puede superar 1 día.
Example With Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/surveys/results/number-of-pages?from=2021-05-01&to=2021-05-01&date_type=created' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/number-of-pages?from=2021-05-01&to=2021-05-01&date_type=created")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/surveys/results/number-of-pages?from=2021-05-01&to=2021-05-01&date_type=created", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/number-of-pages?from=2021-05-01&to=2021-05-01&date_type=created", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/surveys/results/number-of-pages?from=2021-05-01&to=2021-05-01&date_type=created
permite obtener los resultados creados en la bd entre las fechas "2021-05-01 00:00:00" y "2021-05-01 23:59:59".
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"data": {
"number_of_results": 499,
"number_of_pages": 5
}
}
Respuesta exitosa.
Get Results Paginated
Get Results Paginated
Este endpoint permite obtener resultados de una página específica en un rango de fechas, y su request http es GET https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=<from>&to=<to>&date_type=<date_type>&page=<page>
.
Accepted Parameters
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 00:00:00". |
to | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 59:59:59". |
date_type | true | Admite los valores created (fecha de creación/inserción del registro en la bd), date_poll (fecha de encuesta) o date_exp (fecha de experiencia/interacción). |
page | true | Número de página que se desea obtener (la respuesta contendrá entre 1 y 100 registros, y la página a utilizar estará determinada por el servicio "Get Results Number of Pages"). |
id_level_2 | false | Admite ids de estructuras con nivel 2 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_3 | false | Admite ids de estructuras con nivel 3 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_4 | false | Admite ids de estructuras con nivel 4 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_5 | false | Admite ids de estructuras con nivel 5 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_6 | false | Admite ids de estructuras con nivel 6 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_7 | false | Admite ids de estructuras con nivel 7 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
Request Restrictions
- La diferencia entre from y to no puede superar 1 día.
Example With Required Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=5' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=5")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=5", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=5", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=5
permite obtener la quinta página de resultados creados en la bd entre las fechas "2021-05-01 00:00:00" y "2021-05-01 23:59:59" (el quinto lote que contendrá entre 1 y 100 registros).
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"id": 86922201,
"id_cliente": "id_cliente_1,
"pto_contacto": "texto_nivel_5",
"nota": 10,
"verbatim": "texto_verbatim_1",
"fecha_encuesta": "2019-11-01T01:40:41Z",
"fecha_experiencia": "2019-10-28T00:00:00Z",
"fecha_codificación": "2019-11-03T16:17:29Z",
"nivel_2": "texto_nivel_2",
"nivel_3": "texto_nivel_3",
"nivel_4": "texto_nivel_4",
"nivel_5": "texto_nivel_5",
"nivel_6": null,
"nombre": "nombre_1",
"apellidos": "apellidos_1",
"celular": null,
"correo": "correo1@example.com",
"género": "Femenino",
"micro_1": "microdriver_1",
"micro_2": null,
"micro_3": null,
"inter_1": "interdriver_1",
"inter_2": null,
"inter_3": null,
"macro_1": "macrodriver_1",
"macro_2": null,
"macro_3": null
},
{
"id": 86922202,
"id_cliente": "id_cliente_2,
"pto_contacto": "texto_nivel_4",
"nota": 9,
"verbatim": "texto_verbatim_2",
"fecha_encuesta": "2019-11-01T01:40:41Z",
"fecha_experiencia": "2019-10-28T00:00:00Z",
"fecha_codificación": "2019-11-03T16:17:29Z",
"nivel_2": "texto_nivel_2",
"nivel_3": "texto_nivel_3",
"nivel_4": "texto_nivel_4",
"nivel_5": null,
"nivel_6": null,
"nombre": "nombre_2",
"apellidos": null,
"celular": "celular_2",
"correo": "correo2@example.com",
"género": "Masculino",
"micro_1": "microdriver_1",
"micro_2": "microdriver_2",
"micro_3": null,
"inter_1": "interdriver_1",
"inter_2": "interdriver_2",
"inter_3": null,
"macro_1": "macrodriver_1",
"macro_2": "macrodriver_2",
"macro_3": null
}
]
}
Respuesta exitosa considerando que la quinta página de ese día solo contenía 2 resultados.
Example With Structures Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=1&id_level_3=3,529' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=1&id_level_3=3,529")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=1&id_level_3=3,529", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=1&id_level_3=3,529", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/surveys/results/paginated?from=2021-05-01&to=2021-05-01&date_type=created&page=1&id_level_3=3,529
permite obtener la primera página de resultados creados en la bd entre las fechas "2021-05-01 00:00:00" y "2021-05-01 23:59:59" para las estructures cuyo nivel 3 coincida con los ids 3 o 529.
Response Sample 2
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"id": 86922201,
"id_cliente": "id_cliente_1,
"pto_contacto": "texto_nivel_5",
"nota": 10,
"verbatim": "texto_verbatim_1",
"fecha_encuesta": "2019-11-01T01:40:41Z",
"fecha_experiencia": "2019-10-28T00:00:00Z",
"fecha_codificación": "2019-11-03T16:17:29Z",
"nivel_2": "texto_nivel_2",
"nivel_3": "texto_nivel_3",
"nivel_4": "texto_nivel_4",
"nivel_5": "texto_nivel_5",
"nivel_6": null,
"nombre": "nombre_1",
"apellidos": "apellidos_1",
"celular": null,
"correo": "correo1@example.com",
"género": "Femenino",
"micro_1": "microdriver_1",
"micro_2": null,
"micro_3": null,
"inter_1": "interdriver_1",
"inter_2": null,
"inter_3": null,
"macro_1": "macrodriver_1",
"macro_2": null,
"macro_3": null
}
]
}
Respuesta exitosa considerando que la primera página de ese día con esos filtros de estructura solo contenía 1 resultados.
Get Uncompleted Results
Get Uncompleted Results
Este endpoint permite obtener resultados que no tienen segments ni others indicando al menos un tipo y rango de fechas, y su request http es GET https://api-staging.loyal.ink/api/v2/surveys/results/incomplete?from=<from>&to=<to>&date_type=<date_type>
.
Accepted Parameters
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 00:00:00". |
to | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 59:59:59". |
date_type | true | Admite los valores created (fecha de creación/inserción del registro en la bd), date_poll (fecha de encuesta) o date_exp (fecha de experiencia/interacción). |
Request Restrictions
- La diferencia entre from y to no puede superar 1 día.
Example With Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/surveys/results/incomplete?from=2021-05-01&to=2021-05-02&date_type=created' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
--data-raw ''
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/incomplete?from=2021-05-01&to=2021-05-02&date_type=created")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/surveys/results/incomplete?from=2021-05-01&to=2021-05-02&date_type=created", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var raw = "";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/incomplete?from=2021-05-01&to=2021-05-02&date_type=created", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/surveys/results/incomplete?from=2021-05-01&to=2021-05-02&date_type=created
permite obtener los resultados creados en la bd entre las fechas "2021-05-01 00:00:00" y "2021-05-02 23:59:59".
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"total": 2,
"data": [
{
"id": 264359,
"id_cliente": "client_id_264359",
"pto_contacto": "name_level_4",
"nota": 10,
"verbatim": "verbatim_1",
"fecha_encuesta": "2021-05-01 00:05:38",
"fecha_experiencia": "2021-05-01 00:05:35",
"fecha_codificación": "2021-05-01 18:07:53",
"nivel_2": "name_level_2",
"nivel_3": "name_level_3",
"nivel_4": "name_level_4",
"nivel_5": null,
"nivel_6": null
},
{
"id": 264364,
"id_cliente": "client_id_264364",
"pto_contacto": "name_level_3",
"nota": 10,
"verbatim": "verbatim_2",
"fecha_encuesta": "2021-05-01 01:13:19",
"fecha_experiencia": "2021-05-01 01:13:16",
"fecha_codificación": "2021-05-01 18:07:57",
"nivel_2": "name_level_2",
"nivel_3": "name_level_3",
"nivel_4": null,
"nivel_5": null,
"nivel_6": null
}
]
}
Respuesta exitosa.
Add Segments/Others To Uncompleted Results
POST Segments/Others To Uncompleted Results
Este endpoint permite añadir Segments y/o Others (una sola vez) a los resultados incompletos, y su request http es POST https://api-example.loyal.ink/api/v2/surveys/results/incomplete
.
Accepted Parameters In Body
Parameter | Required | Description |
---|---|---|
result_id | true | Este parámetro va dentro del body (en formato JSON), y debe contener un string con un id existente de la tabla results. |
seg_xxx | false | Este parámetro va dentro del body (en formato JSON), y debe contener un string con un código para el nombre del campo y su posible valor (ambos existentes en segments). |
otros_xxx | false | Este parámetro va dentro del body (en formato JSON), y debe contener un string con un código para el nombre del campo (existente en others). |
Example With Parameters
curl --location --request POST 'https://api-example.loyal.ink/api/v2/surveys/results/incomplete' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: text/plain' \
--data-raw '[
{
"result_id": "12341",
"seg_genero": "code_gen_1",
"otros_nombre": "texto_nombre_1"
},
{
"result_id": "12342",
"seg_genero": "code_gen_2",
"otros_nombre": "texto_nombre_2"
}
]'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/incomplete")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "text/plain"
request.body = "[\r\n {\r\n \"result_id\": \"12341\",\r\n \"seg_genero\": \"code_gen_1\",\r\n \"otros_nombre\": \"texto_nombre_1\"\r\n },\r\n {\r\n \"result_id\": \"12342\",\r\n \"seg_genero\": \"code_gen_2\",\r\n \"otros_nombre\": \"texto_nombre_2\"\r\n }\r\n]"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[\r\n {\r\n \"result_id\": \"12341\",\r\n \"seg_genero\": \"code_gen_1\",\r\n \"otros_nombre\": \"texto_nombre_1\"\r\n },\r\n {\r\n \"result_id\": \"12342\",\r\n \"seg_genero\": \"code_gen_2\",\r\n \"otros_nombre\": \"texto_nombre_2\"\r\n }\r\n]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'text/plain'
}
conn.request("POST", "/api/v2/surveys/results/incomplete", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "text/plain");
var raw = "[\r\n {\r\n \"result_id\": \"12341\",\r\n \"seg_genero\": \"code_gen_1\",\r\n \"otros_nombre\": \"texto_nombre_1\"\r\n },\r\n {\r\n \"result_id\": \"12342\",\r\n \"seg_genero\": \"code_gen_2\",\r\n \"otros_nombre\": \"texto_nombre_2\"\r\n }\r\n]";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/incomplete", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
POST https://api-example.loyal.ink/api/v2/surveys/results/incomplete
permite añadir segments y others a los result_id declarados en cada objeto json respectivamente.
Response Sample 1
Respuesta obtenida:
{
"status": 400,
"message": "Ya existen registros asociados.",
"error": {
"internal_code": 628,
"detailed_message": "El registro de result ya tiene registros others asociados.",
"wrong_field": "result_id",
"wrong_value": "189",
"trace_id": "6006f30a357c9182392157"
}
}
Respuesta que se obtiene al intentar agregar un otros_xxx y/o seg_xxx a un result_id que no figura como incompleto en la bd.
Response Sample 2
Respuesta obtenida:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 622,
"detailed_message": "El campo result_id solamente acepta valores numericos.",
"wrong_field": "result_id",
"index_register": 0,
"trace_id": "6006f4d9357c9117919348"
}
}
Respuesta que se obtiene al enviar un result_id no numérico.
Response Sample 3
Respuesta obtenida:
{
"status": 404,
"message": "Campo no encontrado.",
"error": {
"internal_code": 624,
"detailed_message": "El valor de result_id no fue encontrado en results.",
"field_not_found": "result_id",
"value_not_found": 8989899,
"trace_id": "6006f532357c9403328774"
}
}
Respuesta que se obtiene al enviar un result_id no existente en la bd.
Response Sample 4
Respuesta obtenida:
{
"status": 200,
"message": "Los registros han sido insertados exitosamente."
}
Respuesta exitosa.
Disable Results
Disable Results
Este endpoint permite deshabilitar resultados indicando su id único, y su request http es PUT https://api-example.loyal.ink/api/v2/surveys/results/<result_id>
.
Accepted Parameters
Parameter | Required | Description |
---|---|---|
result_id | true | Entero mayor a 0 que exista en la lista de resultados. |
Example With Parameters
curl --location --request PUT 'https://api-example.loyal.ink/api/v2/surveys/results/1234' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results/1234")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("PUT", "/api/v2/surveys/results/1234", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'PUT',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results/1234", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
PUT https://api-example.loyal.ink/api/v2/surveys/results/1234
permite deshabilitar el resultado 1234.
Response Sample 1
Respuesta obtenida:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 623,
"detailed_message": "El campo result_id solamente acepta valores numericos mayores a 0.",
"wrong_field": "result_id",
"index_register": 0,
"trace_id": "5fecf4ca3699a570064010"
}
}
Respuesta que se obtiene al enviar un result_id menor o igual a 0.
Response Sample 2
Respuesta obtenida:
{
"status": 404,
"message": "Campo no encontrado.",
"error": {
"internal_code": 624,
"detailed_message": "El valor de result_id no fue encontrado en results.",
"field_not_found": "result_id",
"value_not_found": 55451238888,
"trace_id": "5fecf53c3699a500937633"
}
}
Respuesta que se obtiene al enviar un result_id que no existe en la bd.
Response Sample 3
Respuesta obtenida:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 622,
"detailed_message": "El campo result_id solamente acepta valores numericos.",
"wrong_field": "result_id",
"index_register": 0,
"trace_id": "5fecf5873699a281292442"
}
}
Respuesta que se obtiene al enviar un valor no numerico en result_id.
Response Sample 4
Respuesta obtenida:
{
"status": 200,
"message": "El registro ha sido actualizado exitosamente."
}
Respuesta exitosa.
Upload Results
Post Results Full
Este servicio permite inyectar encuestas completas (con nota, verbatim, etc.) en loyalink.
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "application/json"
request.body = "[{\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_nota\":10,\"base_verbatim\":\"verbatim_1\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_1\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"\"},{\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_nota\":9,\"base_verbatim\":\"verbatim_2\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_2\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_nota\":10,\"base_verbatim\":\"verbatim_1\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_1\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"\"},{\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_nota\":9,\"base_verbatim\":\"verbatim_2\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_2\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/surveys/results", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/surveys/results' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_nota": 10,
"base_verbatim": "verbatim_1",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_1",
"otros_apellidos": "",
"otros_fonocel": "fonocel_1",
"otros_email": ""
}, {
"base_id_cliente": "client_id_2",
"base_pto_contacto": "structure_code_2",
"base_nota": 9,
"base_verbatim": "verbatim_2",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_2",
"otros_apellidos": "",
"otros_fonocel": "fonocel_2",
"otros_email": ""
}
]'
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_nota":10,"base_verbatim":"verbatim_1","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_1","otros_apellidos":"","otros_fonocel":"fonocel_1","otros_email":""},{"base_id_cliente":"client_id_2","base_pto_contacto":"structure_code_2","base_nota":9,"base_verbatim":"verbatim_2","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_2","otros_apellidos":"","otros_fonocel":"fonocel_2","otros_email":""}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
HTTP Request
POST https://api-example.loyal.ink/api/v2/surveys/results
Request Body
En el body de la petición debe ir un arreglo de objetos json, de este tipo:
En el body de la petición podrían ir hasta un máximo de 1500 registros por insertar.
[
{
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_nota": 10,
"base_verbatim": "verbatim_1",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_1",
"otros_apellidos": "",
"otros_fonocel": "fonocel_1",
"otros_email": ""
}, {
"base_id_cliente": "client_id_2",
"base_pto_contacto": "structure_code_2",
"base_nota": 9,
"base_verbatim": "verbatim_2",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_2",
"otros_apellidos": "",
"otros_fonocel": "fonocel_2",
"otros_email": ""
}
]
Allowed Parameters
Parameter | Required | Type |
---|---|---|
base_id_cliente | true | String |
base_pto_contacto | true | String |
base_nota | true | String |
base_verbatim | true | String |
base_fecha_encuesta | true | String |
base_fecha_experiencia | true | String |
base_alerta | false | int |
base_estado | false | int |
Los campos con el patrón "seg_xyz" y "otros_xyz" también son permitidos, siempre y cuando exista su respectivo code (y su posible valor en el caso de seg_xyz).
Los campos requeridos son todos aquellos que comienzan con "base_xyz" (con excepción de base_estado y base_alerta que son campos optativos) y estan la lista anterior (campos permitidos), la inexistencia de alguno de estos provocará un error y la no inserción de los registros.
base_id_cliente
Si "base_id_cliente": "", el error retornado sería:
{
"status": 400,
"message": "Campo en blanco.",
"error": {
"internal_code": 602,
"detailed_message": "Este campo no puede estar vacio.",
"wrong_field": "base_id_cliente",
"index_register": 0,
"trace_id": "5f6c9f1a26c20263761606"
}
}
base_id_cliente:string:required
- Este campo solamente acepta valores tipo string y no puede estar vacío ("").
base_pto_contacto
En caso de no existir el base_pto_contacto ingresado:
{
"status": 404,
"message": "Campo no encontrado.",
"error": {
"internal_code": 604,
"detailed_message": "Campo no existente en structures.code",
"wrong_field": "base_pto_contacto",
"index_register": 0,
"trace_id": "5f6c9f9e26c20768836009"
}
}
base_pto_contacto:string:required
- Este campo solamente acepta valores tipo string y no puede estar vacío ("").
- El valor ingresado debe existir dentro de la lista de códigos definidos en loyalink. Para ver en detalle estos códigos se debe comunicar con su consultor a cargo o escribir a soporte@alco.cl.
base_nota
En caso de intentar enviar un valor fuera de ese rango, por ejemplo "base_nota": -1, la api retornará:
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 613,
"detailed_message": "El valor de base_nota no esta dentro del rango aceptado [0, 10]",
"wrong_field": "base_nota",
"index_register": 0,
"trace_id": "5f6ca0cb26c20850253123"
}
}
base_nota:int:required
- Este campo solamente acepta valores numéricos enteros entre el rango de 0, 10
base_verbatim
base_verbatim:string:required
- Este campo acepta valores tipo string que pueden ser vacíos "base_verbatim": ""
base_fecha_encuesta
Error al intentar ingresar una fecha incorrecta
{
"status": 400,
"message": "Campo con error de formato.",
"error": {
"internal_code": 614,
"detailed_message": "Error de formato en la fecha (formato aceptado YYYY-MM-DD HH:MM:SS).",
"wrong_field": "base_fecha_encuesta",
"index_register": 0,
"trace_id": "5f6ca27426c20477062375"
}
}
base_fecha_encuesta:string:required
Este campo acepta valores tipo string con formato de fecha YYYY-MM-DD HH:MM:SS, por ejemplo: "2019-10-18 12:00:00".
No se aceptan campos vacíos "" o con el formato "0000-00-00 00:00:00".
base_fecha_experiencia
Error al intentar ingresar una fecha incorrecta
{
"status": 400,
"message": "Campo con error de formato.",
"error": {
"internal_code": 614,
"detailed_message": "Error de formato en la fecha (formato aceptado YYYY-MM-DD HH:MM:SS).",
"wrong_field": "base_fecha_encuesta",
"index_register": 0,
"trace_id": "5f6ca2c726c20769022908"
}
}
base_fecha_experiencia:string:required
Este campo acepta valores tipo string con formato de fecha YYYY-MM-DD HH:MM:SS, por ejemplo: "2019-10-18 12:00:00".
No se aceptan campos vacíos "" o con el formato "0000-00-00 00:00:00".
base_alerta
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 616,
"detailed_message": "El campo solo acepta los valores 0 o 1.",
"wrong_field": "base_alerta",
"index_register": 0,
"trace_id": "5f6ca37a26c20395554229"
}
}
base_alerta:int:optional
- Este es un campo opcional (puede venir o no dentro de algún registro dentro del body), en caso de que se intente enviar este campo, se aplicarán validaciones.
- Los valor permitidos son 0 y 1. En caso de intentar enviar algun valor distinto se arrojará un error del tipo:
base_estado
{
"status": 400,
"message": "Valor no permitido.",
"error": {
"internal_code": 616,
"detailed_message": "El campo solo acepta los valores 0 o 1.",
"wrong_field": "base_estado",
"index_register": 0,
"trace_id": "5f6ca3eb26c20865559506"
}
}
base_estado:int:optional
- Este es un campo opcional (puede venir o no dentro de algún registro dentro del body), en caso de que se intente enviar este campo, se aplicarán validaciones.
- Los valor permitidos son 0 y 1. En caso de intentar enviar algun valor distinto se arrojará un error del tipo:
Acerca de los campos seg_*
En caso de no existir el campo seg_*, se arroja un error:
{
"status": 400,
"message": "Campo no permitido.",
"error": {
"internal_code": 600,
"detailed_message": "Existe un campo que no es aceptado.",
"wrong_field": "seg_genero",
"index_register": 0,
"trace_id": "5f6cbba126c20640049317"
}
}
Campos con el patrón seg_*
Los campos ingresado con la clave seg_*, por ejemplo:
"seg_genero": "gen_1"
Pasan por la validación de existencia de la clave, tanto para code_2 (seg_genero en este caso) como para code_3 (gen_1 en este caso). Para más detalles acerca de los valores permitidos puede consultar el servicio "Segments".
- Los campos seg_* cuyo valor (code_3) sea "" serán ignorados.
- El valor que lleva un campo seg_* puede ser tanto string como entero.
Acerca de los campos otros_*
En caso de no existir el code, se arroja un error del tipo:
{
"status": 400,
"message": "Campo no permitido.",
"error": {
"internal_code": 600,
"detailed_message": "Existe un campo que no es aceptado.",
"wrong_field": "otros_campo_no_existente",
"index_register": 0,
"trace_id": "5f6cbf1a26c20252474174"
}
}
Campos con el patrón seg_*
Los campos ingresado con la clave otros_*, por ejemplo:
"otros_nombre": "nombre_1"
Pasan por la validación de existencia de la clave (code="otros_nombre" en este caso). Para más detalles acerca de los valores permitidos puede consultar el servicio "Others".
- Los campos otros_* cuyo valor sea "" serán ignorados.
- El valor que lleva un campo otros_* solamente puede ser string.
Máxima cantidad de registros a insertar
si se excede ese número la API arrojará un error:
{
"status": 400,
"message": "Error en la cantidad de registros.",
"error": {
"internal_code": 615,
"detailed_message": "Se excede el limite máximo de registros a insertar (máximo = 1500)",
"trace_id": "5f6c9e9a3b962298516443"
}
}
El limite máximo de registros a insertar (cantidad de elementos json dentro del array del body) es de 1500, es decir, dentro del array del body pueden ir hasta 1500 objetos json.
Forget Required Parameter
{
"status": 400,
"message": "Campo no encontrado.",
"error": {
"internal_code": 601,
"detailed_message": "Falta un campo requerido.",
"wrong_field": "base_verbatim",
"index_register": 0,
"trace_id": "5f6c9d901ded7635560186"
}
}
Si llegara a faltar algun campo requerido la consulta sería rechazada. Por ejemplo si no existiera el campo base_verbatim en el body:
Type Of Request 1
Body en formato JSON
[
{
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_nota": 10,
"base_verbatim": "verbatim_1",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_1",
"otros_apellidos": "",
"otros_fonocel": "fonocel_1",
"otros_email": ""
}, {
"base_id_cliente": "client_id_2",
"base_pto_contacto": "structure_code_2",
"base_nota": 9,
"base_verbatim": "verbatim_2",
"base_fecha_encuesta": "2020-09-14 12:00:00",
"base_fecha_experiencia": "2020-09-13 12:00:00",
"seg_genero": "gen_1",
"seg_edad": "",
"otros_nombre": "nombre_2",
"otros_apellidos": "",
"otros_fonocel": "fonocel_2",
"otros_email": ""
}
]
Request
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_nota":10,"base_verbatim":"verbatim_1","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_1","otros_apellidos":"","otros_fonocel":"fonocel_1","otros_email":""},{"base_id_cliente":"client_id_2","base_pto_contacto":"structure_code_2","base_nota":9,"base_verbatim":"verbatim_2","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_2","otros_apellidos":"","otros_fonocel":"fonocel_2","otros_email":""}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys/results", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys/results")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "application/json"
request.body = "[{\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_nota\":10,\"base_verbatim\":\"verbatim_1\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_1\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"\"},{\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_nota\":9,\"base_verbatim\":\"verbatim_2\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_2\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_nota\":10,\"base_verbatim\":\"verbatim_1\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_1\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"\"},{\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_nota\":9,\"base_verbatim\":\"verbatim_2\",\"base_fecha_encuesta\":\"2020-09-14 12:00:00\",\"base_fecha_experiencia\":\"2020-09-13 12:00:00\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"\",\"otros_nombre\":\"nombre_2\",\"otros_apellidos\":\"\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/surveys/results", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'http://api-example.loyal.ink/api/v2/surveys/results' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: application/json' \
--data-raw '[{"base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_nota":10,"base_verbatim":"verbatim_1","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_1","otros_apellidos":"","otros_fonocel":"fonocel_1","otros_email":""},{"base_id_cliente":"client_id_2","base_pto_contacto":"structure_code_2","base_nota":9,"base_verbatim":"verbatim_2","base_fecha_encuesta":"2020-09-14 12:00:00","base_fecha_experiencia":"2020-09-13 12:00:00","seg_genero":"gen_1","seg_edad":"","otros_nombre":"nombre_2","otros_apellidos":"","otros_fonocel":"fonocel_2","otros_email":""}]'
Response
Si todos los campos del body y las credenciales estan correctas, obtendremos como respuesta el siguente json:
{
"status": 200,
"message": "Los registros han sido insertados exitosamente."
}
Send Surveys (massive endpoint)
Post Surveys
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Measurement-Channel"] = "api"
request["Campaign-Name"] = "yyyymmdd_example_api.csv"
request["Content-Type"] = "application/json"
request.body = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"},{\"base_hinteraccion\":\"00:00:00\",\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_2\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_2\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"example_2@loyal.ink\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"},{\"base_hinteraccion\":\"00:00:00\",\"base_id_cliente\":\"client_id_2\",\"base_pto_contacto\":\"structure_code_2\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_2\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_2\",\"otros_fonocel\":\"fonocel_2\",\"otros_email\":\"example_2@loyal.ink\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Measurement-Channel': 'api',
'Campaign-Name': 'yyyymmdd_example_api.csv',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/surveys", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/surveys' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Measurement-Channel: api' \
--header 'Campaign-Name: yyyymmdd_example_api.csv' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}, {
"base_hinteraccion": "00:00:00",
"base_id_cliente": "client_id_2",
"base_pto_contacto": "structure_code_2",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_2",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_2",
"otros_fonocel": "fonocel_2",
"otros_email": "example_2@loyal.ink"
}
]'
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Measurement-Channel", "api");
myHeaders.append("Campaign-Name", "yyyymmdd_example_api.csv");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_hinteraccion":"12:00:00","base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_1","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_1","otros_fonocel":"fonocel_1","otros_email":"example_1@loyal.ink"},{"base_hinteraccion":"00:00:00","base_id_cliente":"client_id_2","base_pto_contacto":"structure_code_2","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_2","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_2","otros_fonocel":"fonocel_2","otros_email":"example_2@loyal.ink"}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/surveys", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Este endpoint deja en cola los registros enviados en el body de la petición para que loyalink los envíe vía correo tiempo después de forma automática.
HTTP Request
POST https://api-example.loyal.ink/api/v2/surveys
Request Body
En el body de la petición debe ir un arreglo de objetos json, de este tipo:
En el body de la petición podrían ir N objetos, y cada uno de ellos eventualmente generará un correo.
[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
},
{
"base_hinteraccion": "00:00:00",
"base_id_cliente": "client_id_2",
"base_pto_contacto": "structure_code_2",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_2",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_2",
"otros_fonocel": "fonocel_2",
"otros_email": "example_2@loyal.ink"
}
]
Required Parameters
Parameter | Required | Description |
---|---|---|
base_id_cliente | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_pto_contacto | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_finteraccion | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_cod_encuesta | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
Optional Headers
Parameter | Required | Description |
---|---|---|
Measurement-Channel | false | Para este endpoint el valor por defecto es api, pero podría cambiar a mail o whatsapp dependiendo de lo que aconseje el consultor a cargo (dudas a soporte@alco.cl). |
Campaign-Name | false | La única restricción que tiene es que el nombre comience con una fecha válida en formato yyyymmdd, y se recomienda utilizar nombres diarios del tipo "yyyymmdd_example_channel_descripcion_corta.csv". |
Type Of Request 1
Agregar un solo registro a la lista de envíos. En el cuerpo del request se puede incluir hasta 1500 objetos en el json usando este endpoint masivo.
POST https://api-example.loyal.ink/api/v2/surveys
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_hinteraccion":"12:00:00","base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_1","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_1","otros_fonocel":"fonocel_1","otros_email":"example_1@loyal.ink"}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-staging.loyal.ink/api/v2/surveys", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/surveys")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "application/json"
request.body = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/surveys", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/surveys' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]'
Send Survey (unit endpoint)
Post A Survey
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/survey")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Measurement-Channel"] = "api"
request["Campaign-Name"] = "yyyymmdd_example_api.csv"
request["Content-Type"] = "application/json"
request.body = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Measurement-Channel': 'api',
'Campaign-Name': 'yyyymmdd_example_api.csv',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/survey", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/survey' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Measurement-Channel: api' \
--header 'Campaign-Name: yyyymmdd_example_api.csv' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]'
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Measurement-Channel", "api");
myHeaders.append("Campaign-Name", "yyyymmdd_example_api.csv");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_hinteraccion":"12:00:00","base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_1","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_1","otros_fonocel":"fonocel_1","otros_email":"example_1@loyal.ink"}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/survey", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Este endpoint deja en cola el registro enviado en el body de la petición para que loyalink lo envíe vía correo tiempo después de forma automática.
HTTP Request
POST https://api-example.loyal.ink/api/v2/survey
Request Body
En el body de la petición debe ir un arreglo de objetos json, de este tipo:
En el body de la petición podrían ir 1 objeto que eventualmente generará un correo.
[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]
Required Parameters
Parameter | Required | Description |
---|---|---|
base_id_cliente | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_pto_contacto | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_finteraccion | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_cod_encuesta | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
Optional Headers
Parameter | Required | Description |
---|---|---|
Measurement-Channel | false | Para este endpoint el valor por defecto es api, pero podría cambiar a mail o whatsapp dependiendo de lo que aconseje el consultor a cargo (dudas a soporte@alco.cl). |
Campaign-Name | false | La única restricción que tiene es que el nombre comience con una fecha válida en formato yyyymmdd, y se recomienda utilizar nombres diarios del tipo "yyyymmdd_example_channel_descripcion_corta.csv". |
Type Of Request 1
Agregar un solo registro a la lista de envíos. En el cuerpo del request se puede incluir solo 1 objeto (un registro) en el json usando este endpoint unitario.
POST https://api-example.loyal.ink/api/v2/survey
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_hinteraccion":"12:00:00","base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_1","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_1","otros_fonocel":"fonocel_1","otros_email":"example_1@loyal.ink"}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-staging.loyal.ink/api/v2/survey", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/survey")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "application/json"
request.body = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/survey", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/survey' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]'
Get Link for Push (unit endpoint)
Get Link for Push
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/survey/push")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Measurement-Channel"] = "push"
request["Campaign-Name"] = "yyyymmdd_example_push.csv"
request["Content-Type"] = "application/json"
request.body = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
response = http.request(request)
puts response.read_body
import http.client
import mimetypes
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "[{\"base_hinteraccion\":\"12:00:00\",\"base_id_cliente\":\"client_id_1\",\"base_pto_contacto\":\"structure_code_1\",\"base_finteraccion\":\"2020-07-06\",\"base_cod_encuesta\":\"poll_code_1\",\"seg_genero\":\"gen_1\",\"seg_edad\":\"edad_1\",\"otros_nombre\":\"nombre_1\",\"otros_fonocel\":\"fonocel_1\",\"otros_email\":\"example_1@loyal.ink\"}]"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Measurement-Channel': 'push',
'Campaign-Name': 'yyyymmdd_example_push.csv',
'Content-Type': 'application/json'
}
conn.request("POST", "/api/v2/survey/push", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
curl --location --request POST 'https://api-example.loyal.ink/api/v2/survey/push' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature' \
--header 'Measurement-Channel: push' \
--header 'Campaign-Name: yyyymmdd_example_push.csv' \
--header 'Content-Type: application/json' \
--data-raw '[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]'
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Measurement-Channel", "push");
myHeaders.append("Campaign-Name", "yyyymmdd_example_push.csv");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify([{"base_hinteraccion":"12:00:00","base_id_cliente":"client_id_1","base_pto_contacto":"structure_code_1","base_finteraccion":"2020-07-06","base_cod_encuesta":"poll_code_1","seg_genero":"gen_1","seg_edad":"edad_1","otros_nombre":"nombre_1","otros_fonocel":"fonocel_1","otros_email":"example_1@loyal.ink"}]);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/survey/push", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Este endpoint genera un link de encuesta para registro enviado en el body de la petición, el cual puede ser utilizado en cualquier parte y tiene una expiración definida.
HTTP Request
POST https://api-example.loyal.ink/api/v2/survey/push
Request Body
En el body de la petición debe ir un arreglo de objetos json, de este tipo:
En el body de la petición podrían ir 1 objeto que generará un link si es que no hay errores en la petición.
[
{
"base_hinteraccion": "12:00:00",
"base_id_cliente": "client_id_1",
"base_pto_contacto": "structure_code_1",
"base_finteraccion": "2020-07-06",
"base_cod_encuesta": "poll_code_1",
"seg_genero": "gen_1",
"seg_edad": "edad_1",
"otros_nombre": "nombre_1",
"otros_fonocel": "fonocel_1",
"otros_email": "example_1@loyal.ink"
}
]
Required Parameters
Parameter | Required | Description |
---|---|---|
base_id_cliente | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_pto_contacto | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_finteraccion | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
base_cod_encuesta | true | La no existencia de este campo en cada objeto del body provocará el rechazo de la petición. |
Optional Headers
Parameter | Required | Description |
---|---|---|
Measurement-Channel | false | Para este endpoint el valor por defecto es push. |
Campaign-Name | false | La única restricción que tiene es que el nombre comience con una fecha válida en formato yyyymmdd, y se recomienda utilizar nombres diarios del tipo "yyyymmdd_example_channel_descripcion_corta.csv". |
Response Sample 1
Respuesta obtenida:
[
{
"index": 0,
"url": "https://example-polls.loyal.ink/survey/MzM4NzMwNzkyNw==/630ab6bb3066e501640341/push/Y2xhdXR2dGE=",
"client_id": "client_id_01"
}
]
Respuesta exitosa.
Get Alerts In Progress
Get Alerts In Progress
Este endpoint permite obtener las alertas en proceso para un rango de fechas, y su request http es GET https://api-example.loyal.ink/api/v2/alerts?from=<from>&to=<to>&date_type=<date_type>
.
Accepted Parameters
Parameter | Required | Description |
---|---|---|
from | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 00:00:00". |
to | true | Fecha en formato YYYY-MM-DD (la diferencia entre from y to no puede superar 1 día). Esta fecha será completada con " 59:59:59". |
date_type | true | Admite los valores created (fecha de creación/inserción del registro en la bd), date_poll (fecha de encuesta) o date_exp (fecha de experiencia/interacción). |
start_hour | false | Hora en formato hh:mm:ss (si no se incluye por defecto se utiliza "00:00:00"). |
end_hour | false | Hora en formato hh:mm:ss (si no se incluye por defecto se utiliza "23:59:59"). |
emails | false | Admite correos separados por coma para filtrar responsables. |
segments_ids | false | Admite ids de segments separados por coma para añadirlos a la respuesta. |
others_ids | false | Admite ids de others separados por coma para añadirlos a la respuesta. |
id_level_2 | false | Admite ids de estructuras con nivel 2 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_3 | false | Admite ids de estructuras con nivel 3 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_4 | false | Admite ids de estructuras con nivel 4 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_5 | false | Admite ids de estructuras con nivel 5 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_6 | false | Admite ids de estructuras con nivel 6 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
id_level_7 | false | Admite ids de estructuras con nivel 7 (ver servicio "Essential Get / Get Structures Tree with filters" para más detalles). |
Request Restrictions
- La diferencia entre from y to no puede superar 1 día.
Example With Required Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created
permite obtener las alertas en progreso del día 2021-05-10.
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"total": 1,
"data": [
{
"identificador_único_de_loyalink_para_el_cierre": "609029dc9e205111226551",
"responsable": "example@loyal.ink",
"fecha_de_emisión_de_la_alerta": "2021-05-10 09:00:57",
"nombre_de_la_alerta": "Regla de alerta 24",
"id_único_de_loyalink": 12345,
"identificador_del_encuestado": 123456789,
"código_de_estructura": "structure_code_1",
"nombre_de_la_estructura": "Nombre de estructura para structure_code_1",
"nota": 6,
"verbatim": "verbatim del encuestado",
"fecha_de_experiencia": "2021-04-29 00:00:00",
"fecha_de_encuesta": "2021-05-07 21:52:31",
"fecha_de_codificación": "2021-05-13 23:34:23",
"macro_1": "macrodriver_1",
"inter_1": "interdriver_1",
"micro_1": "microdriver_1",
"macro_2": null,
"inter_2": null,
"micro_2": null,
"macro_3": null,
"inter_3": null,
"micro_3": null
}
]
}
Respuesta exitosa utilizando solo parámetros obligatorios.
Example With emails, segments_ids, others_ids Parameters
curl --location --request GET 'https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created&emails=example1@loyal.ink,example2@loyal.ink&others_ids=101,105&segments_ids=101' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created&emails=example1@loyal.ink,example2@loyal.ink&others_ids=101,105&segments_ids=101")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = ''
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature'
}
conn.request("GET", "/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created&emails=example1@loyal.ink,example2@loyal.ink&others_ids=101,105&segments_ids=101", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created&emails=example1@loyal.ink,example2@loyal.ink&others_ids=101,105&segments_ids=101", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
GET https://api-example.loyal.ink/api/v2/alerts?from=2021-05-10&to=2021-05-10&date_type=created&emails=example1@loyal.ink,example2@loyal.ink&others_ids=101,105&segments_ids=101
permite obtener las alertas en progreso del día 2021-05-10 para responsables específicos y añadiendo algunos campos segments/others a la respuesta.
Response Sample 2
Respuesta obtenida:
{
"status": 200,
"total": 1,
"data": [
{
"identificador_único_de_loyalink_para_el_cierre": "609029dc9e205111226551",
"responsable": "example1@loyal.ink",
"fecha_de_emisión_de_la_alerta": "2021-05-10 09:00:57",
"nombre_de_la_alerta": "Regla de alerta 24",
"id_único_de_loyalink": 12345,
"identificador_del_encuestado": 123456789,
"código_de_estructura": "structure_code_1",
"nombre_de_la_estructura": "Nombre de estructura para structure_code_1",
"nota": 6,
"verbatim": "verbatim del encuestado",
"fecha_de_experiencia": "2021-04-29 00:00:00",
"fecha_de_encuesta": "2021-05-07 21:52:31",
"fecha_de_codificación": "2021-05-13 23:34:23",
"macro_1": "macrodriver_1",
"inter_1": "interdriver_1",
"micro_1": "microdriver_1",
"macro_2": null,
"inter_2": null,
"micro_2": null,
"macro_3": null,
"inter_3": null,
"micro_3": null,
"otros_nombre": "nombre del encuestado",
"otros_fonocel": 56987654321,
"seg_genero": "Femenino"
}
]
}
Respuesta exitosa utilizando parámetros obligatorios y algunos voluntarios.
Post Close Alerts In Progress
Post Close Alerts In Progress
Este endpoint permite cerrar la gestión de una alerta en progreso, y su request http es POST https://api-example.loyal.ink/api/v2/alerts?from=<from>&to=<to>&date_type=<date_type>
.
Accepted Parameters In Body
Parameter | Required | Description |
---|---|---|
uuid | true | Identificador único de la alerta que se desea cerrar (se obtiene en el servicio "Get Alerts In Progress". |
true | Correo del usuario que se encargó de cerrar el caso (debe existir entre los usuarios de example.loyal.ink). | |
management_id | true | Admite los valores 3 (se le asigna el estado "Resuelto" a la gestión) y 4 (se le asigna el estado "Cerrado sin contacto" a la gestión). |
verbatim | false | Permite añadir un comentario con las medidas tomadas para cerrar el caso. Si no se incluye este valor se asumirá por defecto "". |
Request Restrictions
- Solo se puede cerrar un caso a la vez.
Example With Parameters
curl --location --request POST 'https://api-example.loyal.ink/api/v2/alerts' \
--header 'Public-Key: your-public-api-key' \
--header 'Loyalink-Signature: your-loyalink-signature'
--header 'Content-Type: text/plain' \
--data-raw '{
"uuid":"61840f5b56b10280619920",
"email":"example1@loyal.ink",
"management_id":3,
"verbatim":"Comentario que explica cómo se cerró el caso"
}'
require "uri"
require "net/http"
url = URI("https://api-example.loyal.ink/api/v2/alerts")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Public-Key"] = "your-public-api-key"
request["Loyalink-Signature"] = "your-loyalink-signature"
request["Content-Type"] = "text/plain"
request.body = "{\r\n \"uuid\":\"61840f5b56b10280619920\",\r\n \"email\":\"example1@loyal.ink\",\r\n \"management_id\":3,\r\n \"verbatim\":\"Comentario que explica cómo se cerró el caso\"\r\n}"
response = https.request(request)
puts response.read_body
import http.client
conn = http.client.HTTPSConnection("api-example.loyal.ink")
payload = "{\r\n \"uuid\":\"61840f5b56b10280619920\",\r\n \"email\":\"example1@loyal.ink\",\r\n \"management_id\":3,\r\n \"verbatim\":\"Comentario que explica cómo se cerró el caso\"\r\n}"
headers = {
'Public-Key': 'your-public-api-key',
'Loyalink-Signature': 'your-loyalink-signature',
'Content-Type': 'text/plain'
}
conn.request("POST", "/api/v2/alerts", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var myHeaders = new Headers();
myHeaders.append("Public-Key", "your-public-api-key");
myHeaders.append("Loyalink-Signature", "your-loyalink-signature");
myHeaders.append("Content-Type", "text/plain");
var raw = "{\r\n \"uuid\":\"61840f5b56b10280619920\",\r\n \"email\":\"example1@loyal.ink\",\r\n \"management_id\":3,\r\n \"verbatim\":\"Comentario que explica cómo se cerró el caso\"\r\n}";
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api-example.loyal.ink/api/v2/alerts", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
POST https://api-example.loyal.ink/api/v2/alerts
con el body de los ejemplos permite cerrar la gestión del caso "61840f5b56b10280619920".
Response Sample 1
Respuesta obtenida:
{
"status": 200,
"message": "El registro ha sido insertado exitosamente."
}
Respuesta exitosa.
Errors
The Kittn API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |