Introducción
El propósito de este documento es la especificación de los servicios web que la plataforma QServus tiene disponible para servir de interface con otros proveedores.
Para las entradas y salidas del webservice se utilizará el formato JavaScript Object Notation (JSON), el cual es un formato para el intercambio de datos que describe los datos con una sintaxis simple para identificar y gestionar los datos. Una de las mayores ventajas que tiene el uso de JSON es que puede ser leído por cualquier lenguaje de programación, y por lo tanto, puede ser usado para el intercambio de información entre distintas tecnologías.
Autenticación
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/sign_in/"
payload = {
"email": "mtoledo@example.com",
"password": "password"
}
response = requests.post(url, json=payload)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/sign_in/ \
--header 'content-type: application/json' \
--data ' {
"email": "mtoledo@example.com",
"password": "password"
}'
var data = JSON.stringify(
{
"email": "mtoledo@example.com",
"password": "password"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/sign_in/");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
{
"id": 7210,
"email": "mtoledo@example.com",
"avatar": null,
"first_name": "Marcelo",
"last_name": "Toledo",
"company": {
"id": 604,
"name": "Qservus Pruebas",
"logo": null,
"default_banner": null,
"back_btn_translation": {
"es": "Anterior",
"en": "Back",
"pt": "Anterior"
},
"next_btn_translation": {
"es": "Siguiente",
"en": "Next",
"pt": "Avanzar"
},
"acknowledgment_translation": {
"es": "Has completado la encuesta. ¡Muchas gracias por tu participación!",
"en": "You have completed the survey. Thank you for your participation!",
"pt": "Você completou a pesquisa. Obrigado pela sua participação!"
},
"btn_answer_again_translation": {
"es": "Volver a responder la encuesta",
"en": "Back to answer survey",
"pt": "Voltar para responder à pesquisa"
},
"send_btn_translation": {
"es": "Enviar",
"en": "Submit",
"pt": "Enviar"
},
"auto_restart": false,
"auto_restart_intermediate": 0,
"auto_restart_finish": 0,
"primary_color": "#fb8c00",
"secondary_color": "#3949ab",
"bg_color": "#000000",
"font_color": "#000000",
"btn_color": "#000000",
"btn_font_color": "#000000"
},
"token": "2b835525265c9f4bcd864d704a8f9f937687f143"
Validar un usuario y entregar datos asociados a el, además del token de seguridad para consumir los servicios proporcionados por la API.
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/sign_in/
Params
Name | Data type | Description |
---|---|---|
String | Correo electrónico registrado en QServus | |
password | String | Clave del usuario |
Response
Name | Data type | Description |
---|---|---|
user Data | Client data object | Datos del usuario con su respectiva compañia y token |
Acciones automatizadas
Crear acciones
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/actions/"
payload = {
"group_alerts_email": "",
"su_survey_tpl_id": 5222,
"qs_campaign_id": [303115],
"qs_sensor_id": [],
"extra_data": [{
"name": "Segmento",
"values": ["Preferente", "Premium"]
}],
"conditions": {
"operator": "or",
"data": [{
"su_question_tpl_id": 124722,
"values": ["1"]
}]
},
"action": {
"type": "mail_notification",
"parameters": {
"subject": "Nuevo promotor cliente premium",
"to": ["jmoya@example.com"],
"copy_to": [],
"show_extra_data": true,
"attach_answer": true,
"group_alerts_email": true
}
}
}
headers = {
'authorization': "Token 8f2375b2d309c728e3677e7128bbf7e3b16f1d0d",
'content-type': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/actions/ \
--header 'authorization: Token 8f2375b2d309c728e3677e7128bbf7e3b16f1d0d' \
--header 'content-type: application/json' \
--data '{
"group_alerts_email": "",
"su_survey_tpl_id": 5222,
"qs_campaign_id": [303115],
"qs_sensor_id": [],
"extra_data": [{
"name": "Segmento",
"values": ["Preferente", "Premium"]
}],
"conditions": {
"operator": "or",
"data": [{
"su_question_tpl_id": 124722,
"values": ["1"]
}]
},
"action": {
"type": "mail_notification",
"parameters": {
"subject": "Nuevo promotor cliente premium",
"to": ["jmoya@example.com"],
"copy_to": [],
"show_extra_data": true,
"attach_answer": true,
"group_alerts_email": true
}
}
}'
var data = JSON.stringify({
"group_alerts_email": "",
"su_survey_tpl_id": 5222,
"qs_campaign_id": [
303115
],
"qs_sensor_id": [],
"extra_data": [
{
"name": "Segmento",
"values": [
"Preferente",
"Premium"
]
}
],
"conditions": {
"operator": "or",
"data": [
{
"su_question_tpl_id": 124722,
"values": [
"1"
]
}
]
},
"action": {
"type": "mail_notification",
"parameters": {
"subject": "Nuevo promotor cliente premium",
"to": [
"jmoya@example.com"
],
"copy_to": [],
"show_extra_data": true,
"attach_answer": true,
"group_alerts_email": true
}
}
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "http://qservus.redcalidad.com/api/actions/");
xhr.setRequestHeader("authorization", "Token 8f2375b2d309c728e3677e7128bbf7e3b16f1d0d");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
{
"message": "La acción fue creada exitosamente."
}
Crear acciones
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/actions/
Response
Name | Data type | Description |
---|---|---|
message | String | Status Message |
APK'S
Listar las APK's
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/apks/"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/apks/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/apks/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"status_code": 200,
"data": [
{
"status": 2,
"version": "1.6.3",
"file_type": "application/vnd.android.package",
"md5": "742d1987f8a481870468e16c08b7b4ae",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_6_3.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.6.3/",
"rel": "self"
}
]
},
{
"status": 2,
"version": "1.6.0",
"file_type": "application/vnd.android.package",
"md5": "f0ef40f1dc5d461d1442c6415ccdd4ad",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_6_0.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.6.0/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.2.1",
"file_type": "application/vnd.android.package",
"md5": "7acde412d40fb6903bc9cbbf15413f82",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_2_1.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.2.1/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.1.21",
"file_type": "application/vnd.android.package",
"md5": "bd398d8032d8b4a047a50877ecb6133e",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_1_21.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.1.21/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.1.20",
"file_type": "application/vnd.android.package",
"md5": "23909fcb6b0d0d3dc0bca4e94ec1dae8",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_1_20.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.1.20/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.1.1",
"file_type": "application/vnd.android.package",
"md5": "699af68a0198182649026e050170835c",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_1_1.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.1.1/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.1.0",
"file_type": "application/vnd.android.package",
"md5": "85d8633b150c1c601ff6953b18469f8f",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_1.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.1.0/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.0.10",
"file_type": "application/vnd.android.package",
"md5": "8926e151692a774e559c777995946529",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_0_10.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.0.10/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.0.8",
"file_type": "application/vnd.android.package",
"md5": "342cdce66afb5729ce30b30579df2287",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_0_8.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.0.8/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.0.5",
"file_type": "application/vnd.android.package",
"md5": "251a947dd31a96607efab0c7b7b9a8a5",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_0_5.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.0.5/",
"rel": "self"
}
]
},
{
"status": 3,
"version": "1.0.4",
"file_type": "application/vnd.android.package",
"md5": "2e0d5e979dc99093f1cacfddeaa53031",
"download_url": "https://s3.amazonaws.com/qservus/apks/qservus_1_0_4.apk",
"links": [
{
"uri": "http://qservus.redcalidad.com/api/apks/1.0.4/",
"rel": "self"
}
]
}
],
"pagination": {
"previous": null,
"next": null,
"count": 11
}
}
Listar las APK'S disponibles
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/apks/
Seguimiento
Obtener listado de casos de seguimiento
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/binnacles/"
payload = [
{
"from": "2021-07-03",
"to": "2021-07-03",
"offset": 1
}
]
headers = {
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143",
'content-type': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/binnacles/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
--data '[{
"from": "2021-07-03",
"to": "2021-07-03",
"offset": 1
}]'
var data = JSON.stringify({
"from": "2021-07-03",
"to": "2021-07-03",
"offset": 1
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/binnacles/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"id": 1,
"binnacle_text": "Respuesta de prueba 1",
"status": 2,
"su_answer": {
"su_question_id": 12355,
"su_question_tpl_id": 12312,
"answer": "en serio?",
"alternative_name": null,
"question_type": 1,
"type_str": "Texto simple",
"question_alias": ""
},
"su_user_respondent": {
"id": 1,
"email": "mtoledo@example.com",
"name": "Marcelo Toledo",
"phone": 123455,
"creation_datetime": "2021-06-03 07:57:25",
"status_mail": 1,
"survey_url": "",
"extra_data": {}
}
}
{
"id": 2,
"binnacle_text": "Respuesta de prueba 2",
"status": 1,
"su_answer": {
"su_question_id": 4519664,
"su_question_tpl_id": 157462,
"answer": "Confirmado",
"alternative_name": null,
"question_type": 1,
"type_str": "Texto simple",
"question_alias": ""
},
"su_user_respondent": {
"id": 2,
"email": "mantoledo@example.com",
"name": "Manuel Toledo",
"phone": 1234222,
"creation_datetime": "2021-06-03 07:57:25",
"status_mail": 2,
"survey_url": "",
"extra_data": {}
}
}
]
Obtiene el listado de los casos de seguimientos creados por la compañia a la cual pertenece el usuario
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/binnacles/
Response
La respuesta es el cliente registrado con los siguientes atributos
Nombre | Data Type | Descripcion |
---|---|---|
id | Int | Identificador del caso de seguimiento |
binnacle text | String | Texto descriptivo por el caso de seguimiento objetivo |
status | Int | Estado actual del caso de seguimiento |
su_answer | Object | Objeto con la información de la respuesta que creó el caso |
su_user_respondent | Object | Objeto con la información de quién genero la respuesta |
Los campos asociados a su_answer obtenidos en response, corresponden a:
Nombre | Data Type | Descripcion |
---|---|---|
su_question_id | Int | Identificador de la respuesta |
su_question_tpl_id | Int | Identificador de la pregunta en la pauta a la que pertenece |
answer | String | Contenido de la respuesta |
type_str | String | Tipo de respuesta entregada |
question_alias | String | Alias de la pregunta |
Los campos asociados a su_user_respondent obtenidos en response, corresponden a:
Nombre | Data Type | Descripcion |
---|---|---|
id | Int | Identificador del encuestado |
String | Correo utilizado por el encuestado para responder | |
name | String | Nombre del encuestado |
phone | String | Telefono inscrito por el encuestado |
creation_datetime | String | Fecha de registro del encuestado |
status_mail | String | Estado del correo electrónico del encuestado |
survey_url | String | Enlace a encuesta respondida por el encuestado |
extra data | JSON | Valores de datos extra respondidos por el encuestado |
Reglas de Contabilidad
Agregar destinatario a lista negra
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/blacklist/"
payload = [
{
"email": "mtoledo@qservus",
"motive": 1,
"email_type": 1
}
]
headers = {
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143",
'content-type': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/blacklist/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
--data '[{
"email": "mtoledo@qservus",
"motive": 1,
"email_type": 1
}]'
var data = JSON.stringify([
{
"email": "mtoledo@qservus",
"motive": 1,
"email_type": 1
}
]);
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/blacklist/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"email": "mtoledo@example.com",
"motive": "4"
},
{
"email": "jcampos@",
"motive": "3"
},
{
"email": "*@example.com",
"motive": "1"
}
]
Agregar el correo electrónico del destinatario a la lista negra de la empresa. También sirve para agregar dominios, como por ejemplo *@example.com y palabras claves.
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/blacklist/
Response
La respuesta es el cliente registrado con los siguientes atributos
Nombre | Data Type | Descripcion |
---|---|---|
String | Correo electrónico a agregar a la lista negra | |
motive | Int | Motivo por el cual se agrega el correo electrónico a la lista negra |
Los motivos por los cuales un destinatario puede entrar a Black List abarcan:
ID | Description |
---|---|
1 | Es molesta o no es interesante. |
2 | Satura la bandeja de entrada. |
3 | Es spam. |
4 | Otro. |
Quitar destinatario de la lista negra
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/blacklist/"
querystring = {
"email":"jsasdfs33@mail.com"
}
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("DELETE", url, data=payload, headers=headers, params=querystring)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request DELETE \
--url 'https://qservus.redcalidad.com/api/blacklist/?email=jsasdfs33%40mail.com' \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://qservus.redcalidad.com/api/blacklist/?email=jsasdfs33%40mail.com");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"removed": "El email mtoledo@example.com fue removido de la lista negra"
}
Agregar el correo electrónico del destinatario a la lista negra de la empresa. También sirve para agregar dominios, como por ejemplo *@example.com y palabras claves.
HTTP Request
- Method: DELETE .
- URL Path:
https://qservus.redcalidad.com/api/blacklist/?email={email}
Response
La respuesta es un objeto con los siguientes atributos:
Name | Data type | Description |
---|---|---|
message | String | Status Message |
Tabla de error
ID | Message | Description |
---|---|---|
401 | Invalid Authorization Token | Token de acceso no autorizado |
404 | Resource Dont Found | El correo no existe en la black list |
500 | Internal Server error | Error interno desde el servidor |
Obtener lista negra
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/blacklist/"
querystring = {"from":"2019-01-14","to":"2019-01-15"}
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url 'https://qservus.redcalidad.com/api/blacklist/?from=2019-01-14&to=2019-01-15' \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/blacklist/?from=2019-01-14&to=2019-01-15");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"email": "mtoledo@qservus",
"motive": "Es molesta o no es interesante",
"type": "Correo electrónico",
"date": "2019-01-15"
},
{
"email": "juan@noexiste.com",
"motive": "Es molesta o no es interesante",
"type": "Correo electrónico",
"date": "2019-01-15"
}
]
Obtener la lista negra de la empresa
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/blacklist/?start_date&finish_date
Response
La respuesta es un listado de clientes registrados en la blacklist bajo los siguientes atributos
Nombre | Data Type | Descripcion |
---|---|---|
String | Correo electrónico a agregar a la lista negra | |
motive | Int | Motivo por el cual se agrega el correo electrónico a la lista negra |
type | String | Type de contacto añadido a la lista negra |
date | String | Fecha en donde se agrega el contacto a la lista negra |
Los motivos por los cuales un destinatario puede entrar a Black List abarcan:
ID | Description |
---|---|
1 | Es molesta o no es interesante. |
2 | Satura la bandeja de entrada. |
3 | Es spam. |
4 | Otro. |
Campañas
Obtener una campaña
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/campaigns/303895"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/campaigns/303895 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/campaigns/303895");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"name": "Satisfacción general",
"questions": [
{
"id": 34,
"title": "¿Como evaluá la atención de nuestro local?",
"alternatives": [
"Muy insatisfecho",
"Insatisfecho",
"Indiferente",
"Satisfecho",
"Muy satisfecho"
],
"alternatives_count": 5
},
{
"id": 35,
"title": "¿Recomendaría nuestros servicios a sus amigos?",
"alternatives": [
"Muy improbable",
"Improbable",
"Probable",
"Bastante probable",
"Muy probable"
],
"alternatives_count": 5
},
{
"id": 36,
"title": "Comentarios",
"alternatives": [],
"alternatives_count": 0
}
]
}
Obtener toda la información de una campaña. De esta forma se pueden obtener los textos de las preguntas y de las alternativas.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/campaigns/{id}
Response
La respuesta es un arreglo de objetos con los siguientes atributos:
Name | Data type | Description |
---|---|---|
name | String | Nombre de la campaña |
questions | Question List | Arreglo de Question asociada a la campaña |
El objeto representativo a Question contiene los siguientes atributos:
Name | Data Type | Description |
---|---|---|
id | Int | Identificador de la pregunta |
title | String | Texto de la pregunta |
alternatives | String List | Alternativas disponibles |
alternatives count | Int | Conteo de Alternativas disponibles |
Obtener respuestas de una campaña
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/campaigns/1206/answers.json/"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/campaigns/1206/answers.json/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/campaigns/1206/answers.json/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"34": 5,
"35": 5,
"36": "Muy bien",
"Teléfono": "123456789",
"schedule_departure_date_time": "06-09-16 7:55",
"Nombre": "Javier Sagredo",
"negocio": "DOM-CL",
"Nationality": "PT",
"flight_number": "A709",
"Fecha": "2016-10-07 12:13:31",
"Correo electrónico": "jsagredo@redcalidad.com",
"cabin_class": "economy",
}
]
Entregar la información de las respuestas asociadas a una campaña.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/campaigns/{id}/answers[.json]/?start_date
Response
La respuesta es un arreglo de objetos representativo de Destinatory, el cual contiene
Nombre | Data Type | Descripcion |
---|---|---|
@q1...@qn | String | Respuestas asociadas a las preguntas |
Teléfono | Int | Numero telefónico del destinatario |
schedule_departure_date_time | String | Hora programada de la campaña |
Nombre | String | Nombre del destinatario |
negocio | String | Negocio en el cual se involucra el destinatario |
Nationality | String | Nacionalidad del destinatario |
fecha | String | Fecha actual de respuesta |
Correo electrónico | String | Email del destinatario |
Obtener listado de campañas activas
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/campaigns"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/campaigns \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/campaigns");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"su_survey": [
40
],
"creation_datetime": "2016-10-12T14:27:48.545516Z",
"id": 23,
"active_su_survey": 40,
"name": "pregunta en correo"
},
{
"su_survey": [
5
],
"creation_datetime": "2016-10-07T18:30:23.605391Z",
"id": 4,
"active_su_survey": 5,
"name": "Satisfacción general 2"
},
{
"su_survey": [
159,
182,
183,
184,
185
],
"creation_datetime": "2016-10-25T13:36:11.898725Z",
"id": 99,
"active_su_survey": 185,
"name": "Tarjeta 31.4"
}
]
Obtener el listado de todas las campañas activas de la empresa.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/campaigns/
Response
La respuesta es un arreglo de objetos con los siguientes atributos:
Name | Data type | Description |
---|---|---|
id | Int | Identificador de la campaña |
name | String | Nombre de la campaña |
creation_datetime | String | Fecha de creación de la campaña |
active_su_survey | Int | Encuesta activa de la campaña |
su_survey | Int List | Arreglo con el id de todas las encuestas asociadas a la campaña |
Sensores
Obtener sensores activos
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/sensors/"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/sensors/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/sensors/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"id": 4310,
"name": "Prueba 1673",
"sensors_fields": [],
"surveys": [
{
"id": 316294,
"title": "¡Tu opinión es importante para Qservus Pruebas!",
"subtitle": "¿Podrías dedicar unos minutos a completar esta encuesta?",
"request_user_data": null,
"logo": "https://d3e0tjynbmb86j.cloudfront.net/img/banner_qs_blue.png",
"logo_full": "https://d3e0tjynbmb86j.cloudfront.net/img/banner_qs_blue.png",
"auto_restart": false,
"auto_restart_intermediate": 0,
"auto_restart_finish": 0,
"primary_color": "#fb8c00",
"secondary_color": "#3949ab",
"qs_company_id": 604,
"translate": false,
"title_translation": "{}",
"end_title": null,
"acknowledgment": null,
"show_survey_title": false,
"default_language": "es",
"default_fields": null,
"pages": [
{
"id": 2932110,
"title": "Página 1",
"n_order": 1,
"questions": [
{
"id": 4028418,
"title": "única",
"no_apply": true,
"no_apply_label": "Nope",
"type": 4,
"type_str": "Selección única",
"alternatives": [
{
"id": 16901561,
"name": "a",
"value": 1
}
]
},
{
"id": 4028419,
"title": "múltiple",
"no_apply": true,
"no_apply_label": "Nope",
"type": 3,
"type_str": "Selección múltiple",
"alternatives": [
{
"id": 16901562,
"name": "A",
"value": 1
}
]
}
]
}
]
}
]
}
]
Retorna un arreglo con todos los sensores activos de la empresa.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/sensors/
Response
Name | Data type | Description |
---|---|---|
id | Int | Identificador único de la encuesta |
name | String | Nombre de la encuesta |
surveys | Sensor List | Lista de encuestas asociadas al sensor |
Las encuestas están representadas bajo la siguiente estructura
Nombre | Data Type | Description |
---|---|---|
id | Int | Identificador único del sensor. |
title | String | Nombre del sensor |
subtitle | String | Subtítulo del sensor |
logo | String | URL asociado al logo |
qs_company | Int | Identificador único de la empresa |
request_user_data | Boolean | Requiere datos de quien responde |
auto_restart_intermadiate | Int | Tiempo de espera para reinicio intermedio (segundos) |
auto_restart_finish | Int | Tiempo de espera para reinicio final (segundos) |
primary_color | String | Color primario de la empresa |
secondary_color | String | Color secundario de la empresa |
translate | Boolean | Traducción de la encuesta |
title_translation | JSON | Traducciones del título de la encuesta |
pages | Page List | Arreglo con objetos del tipo page |
Obtener un sensor
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/sensors/4310"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/sensors/4310 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/sensors/4310");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"id": 4310,
"name": "Prueba 1673",
"sensors_fields": [],
"surveys": [
{
"id": 316294,
"title": "¡Tu opinión es importante para Qservus Pruebas!",
"subtitle": "¿Podrías dedicar unos minutos a completar esta encuesta?",
"request_user_data": null,
"logo": "https://d3e0tjynbmb86j.cloudfront.net/img/banner_qs_blue.png",
"logo_full": "https://d3e0tjynbmb86j.cloudfront.net/img/banner_qs_blue.png",
"auto_restart": false,
"auto_restart_intermediate": 0,
"auto_restart_finish": 0,
"primary_color": "#fb8c00",
"secondary_color": "#3949ab",
"qs_company_id": 604,
"translate": false,
"title_translation": "{}",
"end_title": null,
"acknowledgment": null,
"show_survey_title": false,
"default_language": "es",
"default_fields": null,
"pages": [
{
"id": 2932110,
"title": "Página 1",
"n_order": 1,
"questions": [
{
"id": 4028418,
"title": "única",
"no_apply": true,
"no_apply_label": "Nope",
"type": 4,
"type_str": "Selección única",
"alternatives": [
{
"id": 16901561,
"name": "a",
"value": 1
}
]
},
{
"id": 4028419,
"title": "múltiple",
"no_apply": true,
"no_apply_label": "Nope",
"type": 3,
"type_str": "Selección múltiple",
"alternatives": [
{
"id": 16901562,
"name": "A",
"value": 1
}
]
}
]
}
]
}
]
}
Retorna el sensor solicitado.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/sensors/{id}
Response
La respuestá contenida en el JSON, consiste en un
Nombre | Data Type | Description |
---|---|---|
id | Int | Identificador único del sensor. |
Name | String | Nombre del sensor |
Sensor Fields | String List | Campos del sensor |
Survey | Survey List | Lista de encuestas |
En donde, Survey contiene los siguientes campos
Nombre | Data Type | Description |
---|---|---|
id | Int | Identificador único del sensor. |
title | String | Nombre del sensor |
subtitle | String | Subtítulo del sensor |
logo | String | URL asociado al logo |
qs_company | Int | Identificador único de la empresa |
request_user_data | Boolean | Requiere datos de quien responde |
auto_restart_intermadiate | Int | Tiempo de espera para reinicio intermedio (segundos) |
auto_restart_finish | Int | Tiempo de espera para reinicio final (segundos) |
primary_color | String | Color primario de la empresa |
secondary_color | String | Color secundario de la empresa |
translate | Boolean | Traducción de la encuesta |
title_translation | JSON | Traducciones del título de la encuesta |
pages | Page List | Arreglo con objetos del tipo page |
Multiempresa
Obtener empresas hijas
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/companies/"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
https://qservus.redcalidad.com/api/companies/
curl --request GET \
--url https://qservus.redcalidad.com/api/companies/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/companies/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"id": 2,
"name": "Empresa hija",
"logo": null,
"default_banner": "https://qservus.redcalidad.com/logos/26fc/78cbb.jpg",
"creation_datetime": "2016-10-12T14:47:52.746697Z",
"bg_color": null,
"font_color": null,
"btn_color": null,
"btn_font_color": null
}
]
Listar las empresas hijas de la empresa padre a la cual pertenece el usuario actualmente (last login).
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/companies/
Response
El campo de respuesta consiguiste en una lista de JSON, en donde cada uno de ellos está compuesto por:
Nombre | Data Type | Descripcion |
---|---|---|
id | Int | Identificador de la empresa |
name | String | Nombre de la empresa |
logo | String | Logo de la empresa |
default_banner | String | Banner por defecto de la empresa |
creation_datetime | String | Fecha creación de la empresa |
Usuarios
Agregar usuario a una empresa
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/company/users/"
payload = {
"first_name": "MARCELO",
"last_name": "TOLEDO",
"email": "mtoledo@example.com",
"profile": 2
}
headers = {
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143",
'content-type': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/company/users/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
--data '{
"first_name": "MARCELO",
"last_name": "TOLEDO",
"email": "mtoledo@example.com",
"profile": 2
}'
var data = JSON.stringify({
"first_name": "MARCELO",
"last_name": "TOLEDO",
"email": "mtoledo@example.com",
"profile": 2
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/company/users/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
{"added": "ok"}
Agrega un usuario a una empresa. También envía un email a la dirección de correo especificada con las instrucciones para ingresar.
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/company/users/
Params
Name | Data type | Description |
---|---|---|
first_name | String | Nombre del usuario |
last_name | String | Apellido del usuario |
String | Correo electrónico del usuario | |
profile | Int | Id del perfil perteneciente a la empresa |
Response
Name | Data type | Description |
---|---|---|
message | String | Status Message |
Tabla de error
ID | Message | Description |
---|---|---|
400 | Malformed JSON | |
401 | Invalid Authorization Token | Token de acceso no autorizado |
500 | Internal Server error |
Bloquear usuario a una empresa
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/company/users/mtoledo@example.com/"
payload = {}
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("DELETE", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request DELETE \
--url https://qservus.redcalidad.com/api/company/users/mtoledo@example.com/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://qservus.redcalidad.com/api/company/users/mtoledo@example.com/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{"removed": "ok"}
Bloquea el usuario para que no pueda volver a ingresar a QServus.
HTTP Request
- Method: DELETE .
- URL Path:
https://qservus.redcalidad.com/api/company/users/{email}/
Params
Name | Data type | Description |
---|---|---|
String | Correo electrónico del usuario |
Response
Name | Data type | Description |
---|---|---|
message | String | Status Message |
Tabla de error
ID | Message | Description |
---|---|---|
401 | Invalid Authorization Token | Token de acceso no autorizado |
404 | Not Found | Recurso no encontrado |
500 | Internal Server error |
Obtener listado de usuarios de una empresa
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/company/users/"
payload = {}
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/company/users/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/company/users/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"id": 8,
"email": "jcampos@example.com",
"first_name": "Jorge",
"last_name": "Campos",
"profile": 1
},
{
"id": 1,
"email": "vmartinez@example.com",
"first_name": "Victor",
"last_name": "martinez",
"profile": 1
}
]
Obtener listado de perfiles asociados a una empresa.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/company/users/
Response
Se obtiene un listado de usuarios relacionados con la compañia en cuestión, cuyos atributos de cada uno son:
Nombre | Data Type | Descripcion |
---|---|---|
id | Int | Identificador del objeto company_user |
String | Correo electrónico del usuario | |
first_name | String | Nombre del usuario |
last_name | String | Apellido del usuario |
profile | Int | Identificador del perfil del usuario |
Monitoreo de QServus
Verificar el estado de la plataforma
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/status"
payload = ""
response = requests.request("GET", url, data=payload)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/status
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/status");
xhr.send(data);
The above command returns JSON structured like this:
{
"status_code": 200,
}
Verificar que la plataforma QServus esté en liínea.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/status/
Respondents
Name | Data type | Description |
---|---|---|
status_code | String | Status Message |
Encuestas
Obtener Encuestas Activas
Busca todas las encuestas activas asociadas a una compañia en específico
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 7342,
"title": "¡Tu opinión es importante para Qservus Pruebas!",
"creation_datetime": "2019-10-28T09:15:39.069753-03:00",
"update_datetime": "2019-10-29T09:15:39.069753-03:00",
"href": "/api/surveys/7342/"
}
]
}
Retorna un arreglo con todas las encuestas activas de la empresa.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/
Response
La respuesta es un arreglo de objetos con los siguientes atributos:
Name | Data type | Description |
---|---|---|
count | Int | Número de encuestas activas |
next | String | URL |
previous | String | URL |
results | Survey List | Arreglo con objetos del tipo Survey |
Obtener Encuesta Especifica
Obtiene todos los campos asociados a una encuesta en específico.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"id": 7342,
"title": "¡Tu opinión es importante para Qservus Pruebas!",
"creation_datetime": "2019-10-28T09:15:39.069753-03:00",
"update_datetime": "2019-10-29T09:15:39.069753-03:00",
"href": "/api/surveys/7342/"
}
Retorna una encuesta activas de la empresa en específico.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{id}
Params
Name | Data type | Description |
---|---|---|
id | int | identificador de encuesta |
Response
La respuesta es un objeto del tipo survey:
Name | Data type | Description |
---|---|---|
consult | Survey Object | Encuesta especifica con sus repuestas |
Obtener respuesta de una encuesta
Obtiene todas las respuestas asociadas con una encuesta en específico
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/answers"
payload = ""
headers = {'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"links": {
"next": null,
"previous": null
},
"total_pages": 1,
"visible": 200,
"count": 1,
"results": [
{
"name": "Marcelo Toledo",
"email": "mtoledo@example.com",
"phone": "+56989000121",
"creation_datetime": "2019-07-18T10:58:46.738086-04:00",
"extra_data": [
{
"key": "pais",
"value": "Chile"
}
],
"answers": [
{
"su_question_id": 4519664,
"su_question_tpl_id": 157462,
"answer": "en serio?",
"alternative_name": null,
"question_type": 1,
"type_str": "Texto simple",
"question_alias": ""
}
],
"campaign": {
"id": 305600,
"name": "Nueva campaña",
"status_id": 2
},
"sensor": {}
}
]
}
Retorna las respuestas de una encuesta en específico.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{id}/answers/
Params
Name | Data type | Description |
---|---|---|
id | int | identificador de encuesta |
Response
Name | Data type | Description |
---|---|---|
links | JSON | Contiene links a las páginas anterior y siguiente de respuestas |
total_pages | Int | Número de páginas de la encuesta |
visible | Int | Número de respuestas visible por página |
count | Int | Total de respuestas de la encuesta |
results | Response List | Arreglo de objetos response asociados a la encuesta |
Obtener indicadores asociados a una Encuesta
Obtiene un listado de indicadores los cuales están compuestos por una pauta de encuesta en específica.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/indicators/"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/indicators/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/indicators/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un arreglo con todas los indicadores de una compañia que contienen una pauta solicitada.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/indicators/
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
Response
La respuesta es un arreglo de Indicadores.
Obtener un indicador en específico asociado a una Encuesta
Obtiene los campos asociados a un indicador los cuales contienen
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/indicators/10"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/indicators/10 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/indicators/10");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un arreglo con todas los indicadores de una compañia que contienen una pauta solicitada.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/indicators/{indicator_id}
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
indicator_id | int | identificador del indicador |
Response
La respuesta es un objeto del tipo Indicador con sus atributos
Obtener campañas asociadas a una encuesta
Obtiene un listado de campañas, las cuales están asociadas a una encuesta en específico.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/campaigns"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/campaigns/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/campaigns/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un arreglo con todas los campañas de una compañia que contienen una encuesta solicitada.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/campaigns/
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
Response
La respuesta es un listado de campañas contenedoras de la encuesta solicitada, los cuales detallan cada una de ellas
Obtener una campaña asociadas a una encuesta en específico
Obtiene el detalle de una campañas, la cual está asociada a una encuesta en específico.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/campaigns/10 \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un objeto que representa a una campaña, el cual contiene una pauta en específico
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/campaigns/{campaign_id}
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
campaign_id | int | identificador de la campaña |
Response
La respuesta es un objeto del tipo campaña con sus atributos.
Obtener las respuestas de una campaña asociada a una encuesta en específico
Obtiene un listado de respuestas detalladado para una campaña, la cual está además asociada a una encuesta en específico.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/respondents/"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/respondents/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/respondents/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un listado de respuestas a una campaña, el cual contiene una encuesta en específico
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/campaigns/{campaign_id}/respondents/
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
campaign_id | int | identificador de la campaña |
Response
La respuesta es un objeto del tipo campaña con sus atributos.
Obtener la lista encuestados desde una campaña asociada a una encuesta en específico
Obtiene un listado de encuestados de una campaña, la cual está además asociada a una encuesta en específico.
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/invitations/"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/invitations/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qservus.redcalidad.com/api/surveys/7342/campaigns/10/invitations/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
Retorna un listado de encuestados de una campaña, el cual contiene una encuesta en específico
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/surveys/{survey_tpl_id}/campaigns/{campaign_id}/invitations/
Params
Name | Data type | Description |
---|---|---|
survey_tpl_id | int | identificador de la pauta en específico |
campaign_id | int | identificador de la campaña |
Response
La respuesta es un objeto del tipo campaña con sus atributos.
Destinatarios
Recibir respuestas
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/process_answers/"
payload = [
{
"su_survey_id": 316292,
"qs_sensor_id": 4309,
"full_name": "Marcelo Toledo",
"email": "mtoledo@example.com",
"answers": [
{
"su_question_id": 4028344,
"answer": "1",
"answer_motive": "",
"answer_other": ""
}
]
}
]
headers = {
'content-type': "application/json",
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/process_answers/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
--data '[
{
"su_survey_id": 316292,
"qs_sensor_id": 4309,
"full_name": "Marcelo Toledo",
"email": "mtoledo@example.com",
"answers": [
{
"su_question_id": 4028344,
"answer": "1",
"answer_motive": "",
"answer_other": ""
}
]
}
]'
var data = JSON.stringify([
{
"su_survey_id": 316292,
"qs_sensor_id": 4309,
"full_name": "Marcelo Toledo",
"email": "mtoledo@example.com",
"answers": [
{
"su_question_id": 4028344,
"answer": "1",
"answer_motive": "",
"answer_other": ""
}
]
}
]);
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/process_answers/");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"users_respondents": [758, 759]
}
Recibe una o varias respuestas.
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/process_answers/
Response
La respuesta es un objeto con los siguientes atributos:
Name | Data type | Description |
---|---|---|
users_respondents | Int List | Arreglo con el ID de las respuestas guardadas |
Enviar encuesta a destinatario
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/addrespondent/"
payload = {
"campaign_id": 303897,
"survey_id": 316265,
"respondent_email": "mtoledo@example.com",
"respondent_name": "Marcelo Toledo",
"respondent_phone": "123456789"
}
headers = {
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143",
'content-type': "application/json"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/addrespondent/ \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
--data '{
"campaign_id": 303897,
"survey_id": 316265,
"respondent_email": "mtoledo@example.com",
"respondent_name": "Marcelo Toledo",
"respondent_phone": "123456789"
}'
var data = JSON.stringify({
"campaign_id": 303897,
"survey_id": 316265,
"respondent_email": "mtoledo@example.com",
"respondent_name": "Marcelo Toledo",
"respondent_phone": "123456789"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/addrespondent/");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
The above command returns JSON structured like this:
{
"id_respondent": 7048
}
Envia email de invitación a responder una campaña a un destinatario determinado.
HTTP Request
- Method: POST .
- URL Path:
https://qservus.redcalidad.com/api/addrespondent/
Response
La respuesta es un objeto con los siguientes atributos:
Name | Data type | Description |
---|---|---|
id_respondents | Int | Identificador único del destinatario |
Obtener destinatario
Obtiene todos los destinarios según los atributos necesarios y solicitados pasados mediante una query
Example Request:
import requests
url = "https://qservus.redcalidad.com/api/respondents/?q{id#1}"
payload = {}
headers = {
'content-type': "application/json",
'authorization': "Token 2b835525265c9f4bcd864d704a8f9f937687f143"
}
response = requests.request("POST", url, data=payload, headers=headers)
# With shell, you can just pass the correct header with each request
curl --request POST \
--url https://qservus.redcalidad.com/api/respondents/?q{id#1} \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143' \
--header 'content-type: application/json' \
var data = {};
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://qservus.redcalidad.com/api/respondents/?q{id#1}");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 44391614,
"email": "mtoledo@example.com",
"name": "Mauricio Toledo",
"phone": "966963810",
"creation_datetime": "2019-01-07T18:10:51.503900-03:00",
"status_mail": 2,
"survey_url": "https://qservus.redcalidad.com/s/campaign/eyJjYW1wYWlnbl9pZCI6MzAzOTE4LCJ1c2VyX3Jlc3BvbmRlbnRfaWQiOjQ0MzkxNjE0fQ:1ggx2i:JsqEJEcoJ6xW4L5aSEKwzPAD9rA/",
"extra_data": {
"fuente": "TIECO",
"check_in": "2019/01/04",
"nombre_completo": "Pamela Yanez",
"habitacion": "609B",
"rut": "11475369-6",
"check_out": "2019/01/06"
}
}
]
}
Obtener destinatarios.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/respondents/?={query}/
Response
La respuesta es un objeto con los siguientes atributos:
Name | Data type | Description |
---|---|---|
count | Int | Cantidad de respuestas |
next | String | URL de páginas de indicadores |
previous | String | URL de paginación de indicadores |
results | Int List | Lista de respuestas que pertenecen a la pauta |
Perfiles
Listado de perfiles
Example Request:
import requests
url = "https://qa.qservus.com/api/profiles"
payload = ""
headers = {
'authorization': 'Token 2b835525265c9f4bcd864d704a8f9f937687f143'
}
response = requests.request("GET", url, data=payload, headers=headers)
print(response.text)
# With shell, you can just pass the correct header with each request
curl --request GET \
--url https://qa.qservus.com/api/profiles \
--header 'authorization: Token 2b835525265c9f4bcd864d704a8f9f937687f143'
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://qa.qservus.com/api/profiles");
xhr.setRequestHeader("authorization", "Token 2b835525265c9f4bcd864d704a8f9f937687f143");
xhr.send(data);
The above command returns JSON structured like this:
[
{
"id": 1,
"name": "Administrador"
},
{
"id": 2,
"name": "Customer Service"
}
]
Obtener listado de perfiles asociados a una empresa.
HTTP Request
- Method: GET .
- URL Path:
https://qservus.redcalidad.com/api/profiles/
Response
La respuesta es un arreglo de objetos con los siguientes atributos:
Name | Data type | Description |
---|---|---|
id | Int | Identificador de perfil |
name | String | Nombre de perfil |