NAV
shell python javascript

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

Params

Name Data type Description
email 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

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

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

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

Response

La respuesta es el cliente registrado con los siguientes atributos

Nombre Data Type Descripcion
email 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

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

Response

La respuesta es un listado de clientes registrados en la blacklist bajo los siguientes atributos

Nombre Data Type Descripcion
email 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

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

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

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

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

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

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

Params

Name Data type Description
first_name String Nombre del usuario
last_name String Apellido del usuario
email 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

Params

Name Data type Description
email 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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